系列文章目录
一、列表(list)常用操作
-
定义:
l = [1, 2, 'a', [3, 'b']] # 使用方括号[],元素用逗号隔开
列表、字典、元组类型可以相互包含,而集合类型只能被前面的类型包含,不可以包含这些类型。
-
类型转换:
只要是可遍历类型,都可以转换为列表,如字符串、元组、字典等。
print(list('hello')) # 打印:['h', 'e', 'l', 'l', 'o'] print(list({ 'name':'hugh', 'age': 17})) # 打印:['name', 'age']
-
通过索引读取或修改:
通过下标(索引),即可获取指定位置的元素,也可以进行修改操作。
l = [1, 2, 3] print(l[0]) # 打印:1;下标从零开始 print(l[-1]) # 打印:3;负数索引代表从右往左计数,从-1开始 l[0] = 999 print(l[0]) # 打印:999
列表中含有列表,可以把内层列表看成一个元素。更深层次的嵌套还是这个道理。
l1 = [1,2, [3, 4, 5]] # 把整个[3, 4]看成一个元素,下表为2; print(l1[2][1]) # 打印 4
注意:无论是读取还是修改,超出索引范围会报错!!!
-
追加:
-
追加元素-
append()
:l = [1, 2, 3] l.append(4) # 会追加到列表末尾 print(l) # 打印:[1, 2, 3, 4]
-
追加容器类型-
extend()
:l1 = [1, 2, 3] l2 = [4, 5, 6] l1.extend(l2) # 会将列表元素一个个追加到l1,而不是追加整个列表l2 print(l1) # 打印:[1, 2, 3, 4, 5, 6] # 追加字典,只会将键追加进去
-
-
插入元素-
insert()
:l = [1, 2, 3] l.insert(1, '插队的') # 1代表要插入的位置,后面的元素会依次后移 print(l) # 打印:[1, '插队的', 2, 3]
-
删除:
-
del
关键字(通用的删除方法):l = [1, 2, 3] del l[-1] # 只会删除3,没有任何返回值;如果试图保存到变量,则会报错
-
指定索引删除-
pop()
:pop()
会将删除的元素返回,如果不指定索引,默认删除末尾元素。l = [1, 2, 3, 4, 5] a = l.pop() # 默认删除末尾元素,并返回该元素 print(a) # 打印:5 b = l.pop(1) # 指定要删除元素的下标 print(b) # 打印:2
-
指定元素删除-
remove()
:l = [1, 2, 'xyz', 3] l.remove('xyz') # 指定要删除的元素,返回值为None(空的,啥都没有) print(l) # 打印:[1, 2, 3]
-
-
清空列表-
clear()
:l = [1, 2, 3, 4, 5] print(l.clear()) # 打印:None(空的,啥都没有)
-
切片:
切片会将切片后的内容拷贝一份,形成一个新的列表。
l = [1, 2, 3, 4, 5] a = l[0:3] # 会保存在另一块内存空间中 print(a) # 打印:[1, 2, 3]
列表与字符串一样,也支持负数索引,也可以进行倒转操作。
l1 = [1, 2, 3, 4, 5] l2 = l1[::-1] print(l2) # 打印:[5, 4, 3, 2, 1]
-
统计列表长度-
len()
:l = [1, 2, 3, 4, 5] print(len(l)) # 打印:5
-
统计元素出现次数-count():
l = [1, 2, 3, 3, 3, 3] print(l.count(3)) # 打印:4
-
查找指定元素的索引-index():
index()只返回找到的第一个元素的下标。
l = [1, 2, 'hugh', 4, 5, 'hugh'] print(l.index('hugh')) # 打印:2
-
排序-
sort()
:排序时,列表内的元素必须是同一种类型,它们按照ASCII码表的顺序进行排序,也就是说,字符串类型也可以进行排序(按照首字母,首字母相同则比较第二个字母,以此类推)。
l1 = [1, 4, 6, 2, 3, 9, 0] l2 = ['tom','hugh', 'judy','alex'] l1.sort(reverse=False) # reverse=Flase表示升序排序(从小到大),这是默认方式 print(l1) # 打印:[0, 1, 2, 3, 4, 6, 9] l1.sort(reverse=True) # 降序(从大到小) print(l1) # 打印:[9, 6, 4, 3, 2, 1, 0] l2.sort() # 默认升序 print(l2) # 打印:['alex', 'hugh', 'judy', 'tom']
-
循环遍历:
与字符串的遍历操作相同。
二、元组(tuple)常用操作
元组内的元素不可修改,准确的说,元组内部保存的是自身元素的地址,而这些地址是不能够改变的。如果像list那样修改,会报错。
-
定义:
t1 = (1, 2, 'a', [3, 5]) # 使用圆括号() t2 = (1,) # 定义只有一个元素的元组时,要加一个额外的逗号
虽然元组不可修改,但元组内如果包含如列表这样的可变类型,则不影响内部可变类型元素的修改。
t1 = (1, 2, 'a', [3, 5]) # 包含了一个列表 t1[3][1] = 0 # 原来的t1[3][1]是5 print(t1) # 打印:(1, 2, 'a', [3, 0]),原来的5现在修改为0了
注意:此处修改的不是元组,而是元组里边的列表元素,元组仅仅保存了这个列表元素的地址。列表内元素的修改,不会导致元组保存的列表元素的地址改变,所以列表内的元素可以修改。
-
类型转换:
s = 'hello' t = tuple(s) print(t) # 打印:('h', 'e', 'l', 'l', 'o')
-
切片:
与列表的切片操作相似。
其他如统计长度、遍历等操作也都与列表类似。
列表内元素的修改,不会导致元组保存的列表元素的地址改变,所以列表内的元素可以修改。
-
类型转换:
s = 'hello' t = tuple(s) print(t) # 打印:('h', 'e', 'l', 'l', 'o')
-
切片:
与列表的切片操作相似。
其他如统计长度、遍历等操作也都与列表类似。