列表list
一个队里,一个排列整齐的队伍
列表内的个体称作元素,由若干元素组成列表
元素可以是任意对象(数字,字符串,对象,列表等)
列表内元素有顺序,可以使用索引
线性的数据结构
使用 [] 表示
列表是可变的
列表 list 定义,初始化
list() # 定义一个空列表
list(iterable) # 从一个可迭代的对象初始化列表
列表不能一开始就定义大小
列表的查
a = ["klvchen", "tom", "jack", "james", "lily", "lucy"] print(a[1:4])
结果:
['tom', 'jack', 'james']
注意:列表的切片的下标以 0 为开始。即: 下标0 --> klvchen,下标1 --> tom,..... 下标5 --> lucy。
列表的切换顾头不顾尾,例如:a [1:4],则不会取到列表下标为4的元素
从左到右,取到最后:
a = ["klvchen", "tom", "jack", "james", "lily", "lucy"] print(a[1:])
结果:
['tom', 'jack', 'james', 'lily', 'lucy']
从左到右,取到倒数第二个值:
a = ["klvchen", "tom", "jack", "james", "lily", "lucy"] print(a[1:-1])
结果:
['tom', 'jack', 'james', 'lily']
从左到右,隔一个去取:
a = ["klvchen", "tom", "jack", "james", "lily", "lucy"] print(a[1::2])
结果:
['tom', 'james', 'lucy']
从右到左,一个一个去取:
a = ["klvchen", "tom", "jack", "james", "lily", "lucy"] print(a[3::-1])
结果:
['james', 'jack', 'tom', 'klvchen']
从右到左去取
a = ["klvchen", "tom", "jack", "james", "lily", "lucy"] print(a[-2:-4:-1])
结果:
['lily', 'james']
列表的增
append 方法默认插到最后一个位置
a = ["klvchen", "tom", "jack", "james", "lily", "lucy"] a.append("mary") print(a) 结果: ['klvchen', 'tom', 'jack', 'james', 'lily', 'lucy', 'mary']
insert 方法将数据插入到任意一个位置
a = ["klvchen", "tom", "jack", "james", "lily", "lucy"] a.insert(1,"mary") print(a) 结果: ['klvchen', 'mary', 'tom', 'jack', 'james', 'lily', 'lucy']
extend 方法可在列表的末尾一次性追加另一个序列中的多个值
a = ["klvchen", "tom", "jack"] b = ["james", "lily", "lucy"] a.extend(b) print(a)
结果:
['klvchen', 'tom', 'jack', 'james', 'lily', 'lucy']
*,重复操作,将本列表表示元素重复 n 次,返回新的列表
list1 = [1, 2, 3] list2 = list1 * 2 print(list2)
结果:
[1, 2, 3, 1, 2, 3]
+,连接操作,将两个列表连接起来,产生新的列表,原列表不变
list3 = [4, 5, 6] list4 = list1 + list3 print(list4)
结果:
[1, 2, 3, 4, 5, 6]
列表的改
a = ["klvchen", "tom", "jack", "james", "lily", "lucy"] a[1]="tom2" print(a) 结果: ['klvchen', 'tom2', 'jack', 'james', 'lily', 'lucy']
a = ["klvchen", "tom", "jack", "james", "lily", "lucy"] a[1:3]=["tom2", "jack2"] print(a) 结果: ['klvchen', 'tom2', 'jack2', 'james', 'lily', 'lucy']
列表的删
remove 方法
a = ["klvchen", "tom", "jack", "james", "lily", "lucy"] a.remove("tom") print(a) 结果: ['klvchen', 'jack', 'james', 'lily', 'lucy']
pop 方法
a = ["klvchen", "tom", "jack", "james", "lily", "lucy"] b = a.pop(1) print(a) print(b) 结果: ['klvchen', 'jack', 'james', 'lily', 'lucy'] tom
注意 pop 方法会返回删除的元素
del 方法
a = ["klvchen", "tom", "jack", "james", "lily", "lucy"] del a[1] print(a) 结果: ['klvchen', 'jack', 'james', 'lily', 'lucy']
a = ["klvchen", "tom", "jack", "james", "lily", "lucy"] del a print(a) 结果: NameError: name 'a' is not defined
注意:del a 把列表a从内存删除了,所以打印 a 列表程序会报错
clear()
清除列表所有元素,剩下一个空列表
列表元素的统计
list = ['a', 'a', 'b', 'c'] res = list.count('a') print(res) 结果: 2
列表复制
copy()
shadow copy 影子拷贝,也叫浅拷贝,遇到引用类型,只是复制了一个引用而已,返回一个新的列表
lst0 = list(range(4)) lst1 = lst0.copy() print(lst0 == lst1) # 判断 lst0 的元素和 lst1 的元素是否一样 print(lst1 is lst0) # 判断 lst0, lst1 的内存地址是否一样
结果:
True
False
深拷贝
copy 模块提供了 deepcopy
import copy
lst0 = [1, [2, 3, 4], 5]
lst5 = copy.deepcopy(lst0)
lst5[1][1] = 20
print(lst5 == lst0)
False
列表的排序
sort 方法
a = ["klvchen", "tom", "jack", "james", "lily", "lucy"] print(a) a.sort() print(a) 结果: ['klvchen', 'tom', 'jack', 'james', 'lily', 'lucy'] ['jack', 'james', 'klvchen', 'lily', 'lucy', 'tom']
reverse 方法
a = ["klvchen", "tom", "jack", "james", "lily", "lucy"] print(a) a.reverse() print(a) 结果: ['klvchen', 'tom', 'jack', 'james', 'lily', 'lucy'] ['lucy', 'lily', 'james', 'jack', 'tom', 'klvchen']