目录
list详解
1.基础命令
# 数据类型
# 定义含有一个元素的list
# 取第五个元素
# 取第2-6个元素
# 反向取出list中的元素值
# 数据类型转换
# 数据类型转换(扩充)
# 列表转元组
# 元组转列表
# 将第五位修改为5
# 修改元组中第三个元素的第二个元素
# 扩展(空列表)
内置命令
1.append
2.insert
3.clear
4.copy
5.extend
6.pop
7.reverse
8. count
9.index
10.remove
11.sort
定义列表的时候是使用[],也可以包含不同类型的元素,元素之间用逗号隔开。 list(列表)一个有序的序列结构,列表每一个元素有一个索引(下标)。
列表是一个内置可变的序列,及添加.删除.修改元素。
# 正向下标 0 1 2 3 4 5 6 7 8
list_data = [1, 1.1, 6+6j, True, None, 'abcd', b'abcd', (1, 2, 3, 4, 5), [1, 2.2, 'AAA']]
# 负向下标 -9 -8 -7 -6 -5 -4 -3 -2 -1
print(list_data, type(list_data))
print(list_data[0])
list_data2 = [1.1, ] # 或者list_data2 = [1, ]
print(list_data2, type([1.1, ]))
print(list_data[4])
print(list_data[-5])
print(list_data[1:6])
print(list_data[-8:-3])
print(list_data[-1:-10:-1])
print(list_data[8::-1])
print(list_data[::-1])
list_data3 = list(list_data)
print(list_data3, type(list_data3))
list_data11 = [1, 2, 3]
tuple_data11 = tuple(list_data11)
print(tuple_data11, type(tuple_data11))
list_data22 = list(tuple_data11)
print(list_data22, type(list_data22))
list_data[5] = 5
print(list_data)
tuple_data = (1, 1.1, [1, 2])
tuple_data[2][1] = 10
print(tuple_data)
list_data3 = []
print(list_data3, type(list_data3))
list_data1 = list()
print(type(list_data1), list_data1)
有无返回值:若一内置命令没有返回值因此该命令是在原列表上操作的
append(self, object, /) 附加(自身(可以省略), 对象, /(暂时也可省略)) 至少上传参数"对象"该函数,该命令无返回值 Append object to the end of the list. (将对象追加到列表的末尾)
list_data2 = [1, 2, 3]
# 在上述列表末尾插入数字4
list_data2.append(4)
print(list_data2)
insert(self, index, object, /) 插入(自身(可以省略), 索引, 对象, /) Insert object before index. 在索引之前插入对象。该命令无返回值 在3之前插入数字5
list_data2.insert(2, 5)
print(list_data2)
clear(self, /) 清除(自身(可以省略), /) Remove all items from list. 删除列表中所有项目 该命令无返回值 删除列表中所有项目
list_data2.clear()
print(list_data2)
copy(self, /) 复制(自身(可以省略), /) Return a shallow copy of the list. 返回列表的浅副本 浅拷贝和深拷贝 分别打印浅拷贝和深拷贝,并且打印结果中每一个元素的id,并观察。 打印序列中元素id的方法 id(序列中对应元素的下标) 分别用浅拷贝和深拷贝拷贝list_data
list_data = [1, 2, [1, 2]]
shallow_data = list_data.copy()
print(shallow_data)
from copy import deepcopy
deep_data = deepcopy(list_data)
print(deep_data)
同时打印出用浅拷贝和深拷贝拷贝打印后list_data内的所有元素ID(含内层列表)
print(f"{'raw_id':^20}{'1st_id':^20}{'2nd_id':^20}{'3rd_id':^20}{'3-1_id':^20}{'3-1_id':^20}")
print(60*'——')
print(f"{id(list_data):^20}{id(list_data[0]):^20}{id(list_data[1]):^20}{id(list_data[2]):^20} \
{id(list_data[2][0]):^20}{id(list_data[2][1]):^20}")
print(60*'——')
print(f"{id(shallow_data):^20}{id(shallow_data[0]):^20}{id(shallow_data[1]):^20}{id(shallow_data[2]):^20} \
{id(shallow_data[2][0]):^20}{id(shallow_data[2][1]):^20}")
print(60*'——')
print(f"{id(deep_data):^20}{id(deep_data[0]):^20}{id(deep_data[1]):^20}{id(deep_data[2]):^20} \
{id(deep_data[2][0]):^20}{id(deep_data[2][1]):^20}")
运行结果:
'''
D:\AXXZX\Python\python\python.exe D:\python_code\lit.py
[1, 2, [1, 2]]
[1, 2, [1, 2]]
raw_id 1st_id 2nd_id 3rd_id 3-1_id 3-1_id
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
2055355333760 2055346913520 2055346913552 2055352086848 2055346913520 2055346913552
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
2055355321024 2055346913520 2055346913552 2055352086848 2055346913520 2055346913552
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
2055355333504 2055346913520 2055346913552 2055355333248 2055346913520 2055346913552
Process finished with exit code 0
'''
得出如图所示结果:
总结:
浅拷贝:只复制元素一元素二以及元素三(及列表的地址比)的地址,及只复制外层元素的地址。
深拷贝:将列表完整的复制一份,及外层元素内层元素的所有地址都给予复制
extend(self, iterable, /) 扩展(自身(可以省略), 可迭代对象, /) Extend list by appending elements from the iterable. 通过从可迭代对象中追加元素来扩展列表。 该命令无返回值 可迭代对象:range(),字符串,字节,元组,列表 获取列表长度:len(object)-> object:序列及字符串,字节,元组,列表 扩展一个range(4, 10)
list_data = [1, 2, 3]
list_data.extend(range(4, 10))
print(list_data)
扩展一个元组
list_data = [1, 2, 3]
list_data.extend((4, 5, 6, 7, 8, 9))
print(list_data)
扩展一个列表
list_data = [1, 2, 3]
list_data.extend([4, 5, 6, 7, 8, 9])
print(list_data)
扩展一个字符串
list_data = [1, 2, 3]
list_data.extend("1234567")
print(list_data)
# 扩展一个字节
list_data = [1, 2, 3]
list_data.extend(b'456789')
print(list_data)
pop(self, index=-1, /) 移除/弹出(自身(可以省略), 索引=-1, /) Remove and return item at index (default last). 移除并返回索引处的项目,(默认是最后一个) Raises IndexError if list is empty or index is out of range. 引发索引错误如果列表为空或索引超出范围
list_data = [1, 2, 3]
弹出列表最后一个元素
list_data1 = list_data.pop(-1)
print(list_data1)
弹出列表第二个元素
list_data = [1, 2, 3]
list_data2 = list_data.pop(1)
print(list_data2)
print(list_data)
ascii码与字符的转换 ord(字符) chr(ascii码)
print(ord("a"), type(ord("a")))
print(ord("A"))
print(chr(100))
reverse(self, /) 倒值(自身(可以省略), /) Reverse *IN PLACE*. 反向,到位
reverse与切片的区别: reverse不会产生一个新的序列,该命令会使原序列发生改变
list_data = [1, 2, 3, 1, 1, 1, 3, 2]
list_data.reverse()
print(list_data)
而切片会产生一个新的序列且原序列不发生改变及
list_data = [1, 2, 3, 1, 1, 1, 3, 2]
list_data5 = list_data[::-1]
print(list_data5)
print(list_data)
count(self, value, /) 计数(自身(可以省略), 值, /) Return number of occurrences of value. 返回值出现的次数
list_data = [1, 2, 3, 1, 1, 1, 3, 2]
list_data.reverse()
print(list_data)
查看元素1,2,3出现的次数
print(list_data.count(1))
print(list_data.count(2))
print(list_data.count(3))
index(self, value, start=0, stop=9223372036854775807, /) 值:stop=9223372036854775807只是对整数的限制 索引,下标(自身(可以省略), 值,开始=0, 停止=9223372036854775807, /) Return first index of value. 返回值的第一个索引
list_data = [1, 2, 3, 1, 1, 3, 1, 2]
解索列表中所有元素1的下标
pos1 = list_data.index(1)
pos2 = list_data.index(1, pos1+1)
pos3 = list_data.index(1, pos2+1)
pos4 = list_data.index(1, pos3+1)
print(pos1, pos2, pos3, pos4)
remove(self, value, /) 删除(自身(可以省略), 值,/) Remove first occurrence of value. 删除第一次出现的值 Raises ValueError if the value is not present. 如果值不存在则引发ValueError
list_data = [1, 2, 3, 2, 3]
弹出列表中元素3
list_data.remove(3)
print(list_data)
弹出列表中元素2
list_data = [1, 2, 3, 2]
list_data2 = list_data.remove(2)
print(list_data)
sort(self, /, *, key=None, reverse=False) 排序(自身(可以省略), /, *, key=None, reverse=False) *, / 特殊字符规定传参格式 * 规定传参格式只能是key=vaule,而 / 规定传参格式只能是vaule Sort the list in ascending order and return None.、 升序对列表进行排序并返回 无...
数字列表排序
list_data = [1, 3, 2, 5, 4]
list_data.sort()
print(list_data) # [1, 2, 3, 4, 5]
list_data = [1, 3, 2, 5, 4]
list_data.sort(key=None, reverse=False)
print(list_data) # [1, 2, 3, 4, 5]
list_data = [1, 3, 2, 5, 4]
list_data.sort(key=None, reverse=True)
print(list_data) # [5, 4, 3, 2, 1]
单词列表排序
fruit_list = ['banana', 'grape', 'durian', 'apple', 'mango', 'orange', 'watermelon', 'pineapple', 'peach']
fruit_list.sort(key=None, reverse=False)
print(fruit_list) # ['apple', 'banana', 'durian', 'grape', 'mango', 'orange', 'peach', 'pineapple', 'watermelon']
fruit_list = ['banana', 'grape', 'durian', 'apple', 'mango', 'orange', 'watermelon', 'pineapple', 'peach']
fruit_list.sort(key=None, reverse=True)
print(fruit_list) # ['watermelon', 'pineapple', 'peach', 'orange', 'mango', 'grape', 'durian', 'banana', 'apple']
将fruit_list 按照尾字母排序
fruit_list = ['banana', 'grape', 'durian', 'apple', 'mango', 'orange', 'watermelon', 'pineapple', 'peach']
fruit_list.sort(key=lambda x: x[-1])
print(fruit_list) # ['banana', 'grape', 'apple', 'orange', 'pineapple', 'peach', 'durian', 'watermelon', 'mango']
''' 总结: key=None(控制排序规则): 数字列表会按照从小到大的顺排序, 单词列表,首字母不同时会按照首字母顺序排序,首字母相同时会按照第二字母顺序排序以此类推 reverse(相反的)当 reverse=True时会将已排好的列表倒置,当reverse=False是列表不会发生改变