独角兽企业重金招聘Python工程师标准>>>
列表list
不固定大小类型可以不一样长度和索引访问和字符串一样
>>> L = ['a', 'b', 123]>>> L['a', 'b', 123]>>> len(L)3>>> L[0:-1]['a', 'b']
嵌套
M = [[1, 2, 3],[2, 3, 3],[3, 4, 5, 6],]
列表解析
M = [[1, 2, 3],[2, 3, 3],[3, 4, 5, 6],]col2 = [row[1] for row in M]print(col2) # [2, 3, 4]
遍历M,每一行赋值给row,取出每个row中的[1]组成列表。
第二列的每个值加1:
M = [[1, 2, 3],[2, 3, 3],[3, 4, 5, 6],]col2 = [row[1] + 1 for row in M]print(col2) # [3, 4, 5]
取出第二列是偶数的:
M = [[1, 2, 3],[2, 3, 3],[3, 4, 5, 6],]col2 = [row[1] for row in M if row[1] % 2 == 0]print(col2) # [2, 4]
取出矩阵对角线上的值:
M = [[1, 2, 3],[4, 5, 6],[7, 8, 9],]diag = [M[i][i] for i in [0, 1, 2]]print(diag) # [1, 5, 9]
重复字符串中的字符:
doubles = [s * 2 for s in 'hello']print(doubles) # ['hh', 'ee', 'll', 'll', 'oo']
输出两个字符串的交集:
s1 = "SPAM"s2 = "SCAM"intersect = [x for x in s1 if x in s2]print(intersect) # ['S', 'A', 'M']
遍历
list = [2, 3, 1]for item in list:print item # 2 3 1for i in range(len(list)):print i, ":", list[i] # 0:2, 1:3, 2:1for i, item in enumerate(list):print i, ":", item # 0:2, 1:3, 2:1
拷贝
>>> L1 = [2, 3, 4]>>> L2 = L1[:]>>> L1[0] = 24>>> L1[24, 3, 4]>>> L2[2, 3, 4]
和Go不同的是,L1[:]
是复制了L1, L1和L2指向了不同的内存区域。
list与字符串的转换:
>>> s = "abc">>> L = list(s)>>> L['a', 'b', 'c']>>> L[0] = 'd'>>> L['d', 'b', 'c']>>> s = ''.join(L)>>> s'dbc'
增加元素
合并两个列表
L1 + L2
>>> L1 = [0, 1]>>> L2 = [3, 4]>>> L1 + L2[0, 1, 3, 4]
重复列表元素n次
L1 * 3
>>> L1 = [1, 2]>>> L1 * 3[1, 2, 1, 2, 1, 2]
append
>>> L = [1, 2]>>> L.append([3, 4])>>> L[1, 2, [3, 4]]
用分片模拟append():
L[len(L):] = [X]
在后端插入
L[:0] = [X]
在前端插入
extend
>>> L = [1, 2]>>> L.extend([3, 4])>>> L[1, 2, 3, 4]
判断
是否包含某个元素
>>> 1 in L1True
分片赋值
>>> L = [1, 2, 3]>>> L[1:3] = [4, 5, 6]>>> L[1, 4, 5, 6]>>> L[3:] = []>>> L[1, 4, 5]>>> L[1:2] = [6, 7, 8]>>> L[1, 6, 7, 8, 5]
对于L[1:3] = [4, 5, 6]
首先删除L[1:3]
,然后将[4, 5, 6]
插入到L[0]
之后,类似链表。
如果等号前后出现重叠也是可以的,python会先计算出右边的值然后再删除左边的值:
>>> L = [1, 2, 3, 4]>>> L[0:3] = L[1:4]>>> L[2, 3, 4, 4]
分片是复制了一遍:
t = [1, 2, 3]t2 = t[:]t2[0] = 4# 此时t[0]没有变
排序
list = [2, 3, 1]list.sort()print list # [1, 2, 3]
某个元素出现的次数
t = [1, 1, 3, 4, 3]t.count(1) # 2
元组tuple
不可变任意类型>>> T = (1, 2, 3)>>> len(T)3>>> T[1]2>>> T + (4, 5)(1, 2, 3, 4, 5)>>> T[1] = 9 # 不能改变元组中元素的值Traceback (most recent call last):File "<stdin>", line 1, in <module>TypeError: 'tuple' object does not support item assignment
>>> (1, 2) + (3, 4)(1, 2, 3, 4)>>> (1, 2) * 4(1, 2, 1, 2, 1, 2, 1, 2)>>> T = (1, 2, 3, 4)>>> T[1:3](2, 3)
元组也可以不加括号:
>>> x = 1,2,3>>> x(1, 2, 3)
加括号的不一定是元组:
>>> x = (1) # 这是数字1>>> x1>>> x = (1,) # 加 ',' 是为了避免歧义,强制认为这是元组>>> x(1,)
如果觉得《Python-列表和元组》对你有帮助,请点赞、收藏,并留下你的观点哦!