列表
切片
>>> qmc = [1,2,3,4,5,6]
>>> qmc[::2]
[1, 3, 5]
>>> qmc[::-2]
[6, 4, 2]
>>> qmc[::-1]
[6, 5, 4, 3, 2, 1]
增
append():向列表末尾附加一个元素。
>>> member = ['小甲鱼','小布丁','黑夜']
>>> member.append('福禄娃娃')
>>> member
['小甲鱼', '小布丁', '黑夜', '福禄娃娃']
extend(): 把一个列表(可迭代对象)扩展到另一个列表末尾。
可迭代对象:我们已经知道可以对list、tuple、dict、set、str等类型的数据使用for…in…的循环语法从其中依次拿到数据进行使用,我们把这样的过程称为遍历,也叫迭代。
把可以通过for…in…这类语句迭代读取一条数据供我们使用的对象称之为可迭代对象(Iterable)。
>>> member = ['小甲鱼', '小布丁', '黑夜', '福禄娃娃']
>>> member.extend([1,2])
>>> member
['小甲鱼', '小布丁', '黑夜', '福禄娃娃', 1, 2]
利用切片添加元素
>>> s = [1,2,3,4,5]
>>> s[len(s):] = [7] #向列表末尾添加一个元素
>>> s
[1, 2, 3, 4, 5, 7]
>>> s[len(s):] = [6,8,9] #向列表末尾添加多个元素
>>> s
[1, 2, 3, 4, 5, 7, 6, 8, 9]
insert():把一个元素插入指定位置。
>>> member.insert(0,'牡丹')
>>> member
['牡丹', '小甲鱼', '小布丁', '黑夜', '福禄娃娃', 1, 2]
>>> member.insert(len(s):'老王') #把一个元素插入末尾
>>> member
['牡丹', '小甲鱼', '小布丁', '黑夜', '福禄娃娃', 1, 2,'老王']
删
remove():删除某一元素。(如果列表中存在多个匹配元素,只删除第一个)
>>> member.remove('小甲鱼') #删除元素'小甲鱼'
>>> member
['牡丹', '小布丁', '黑夜', '福禄娃娃', 1, 2]
del:不是函数、方法,是语句。可删除某一位置的元素或删除整个列表。
>>> del member[0] #删除member列表的第一个元素
>>> member
['小布丁', '黑夜', '福禄娃娃', 1, 2]
>>> del member #删除列表member
pop():从列表中取出一个元素并返回。
>>> member = ['小布丁', '黑夜', '福禄娃娃', 1, 2]
>>> member.pop() #默认删除最后一个
2
>>> member
['小布丁', '黑夜', '福禄娃娃', 1]
>>> name = member.pop() #可以把取出来的值赋值给一个变量,不回显
>>> name #查看变量name
1
>>> member
['小布丁', '黑夜', '福禄娃娃']
>>> member.pop(0) #也可以删除指定位置的元素
'小布丁'
>>> member
['黑夜', '福禄娃娃']
clear():清空列表。
>>> member.clear()
>>> member
[]
改
#调换两个元素的位置
>>> temp = member[1] #把member[1]的值暂存到temp
>>> member[1] = member[0] #把member[0]的值赋值给member[1]
>>> member
['牡丹', '牡丹', '小布丁', '黑夜', '福禄娃娃', 1, 2]
>>> member[0] = temp
>>> member
['小甲鱼', '牡丹', '小布丁', '黑夜', '福禄娃娃', 1, 2]
>>> member[4] = '钢铁侠' #改变某个元素的值
>>> member
['小甲鱼', '牡丹', '小布丁', '黑夜', '钢铁侠', 1, 2]
>>> member[3:] = ['张三','李四','王五'] #改变从第四个开始以后的元素
>>> member
['小甲鱼', '牡丹', '小布丁', '张三','李四','王五']
sort():从小到大排序。
reverse():把列表里的元素倒序。
>>> number = [6,9,3,1,5,7,4,0,2,8]
>>> number.sort()
>>> number
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> number.reverse()
>>> number
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> number = [6,9,3,1,5,7,4,0,2,8]
>>> number.sort(reverse = True)
>>> number
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
查
count():查看一个元素出现的次数。
index(x,start,end):查看元素的索引值。若该元素有多个,则只显示第一个该元素的索引值。
>>> member[0] #查看第一个元素的值
'牡丹'
>>> member = ['牡丹','小甲鱼','黑夜','迷途','福禄娃娃','小甲鱼','小甲鱼']
>>> member.count('小甲鱼')
3
>>> member.index('迷途')
3
>>> member.index('小甲鱼',2,6) #查看从索引号1到6(不包含6)的'小甲鱼'的索引号
5
>>> member[member.index('迷途')] = '张三' #把'迷途'替换为'张三'
>>> member
['小甲鱼', '牡丹', '黑夜', '张三', '福禄娃娃', '小甲鱼', '小甲鱼']
列表分片(Slice):获取多个元素,组成一个临时列表并显示。
>>> member = ['小甲鱼','牡丹','黑夜','迷途','福禄娃娃']
>>> member[1:3] #显示位置在1和2的元素
['牡丹', '黑夜']
>>> member
['小甲鱼', '牡丹', '黑夜', '迷途', '福禄娃娃']
>>> member[:6] #从第一个位置开始,0可省略不写
['小甲鱼', '牡丹', '黑夜', '迷途', '福禄娃娃']
>>> member[1:] #从第二个取到最后一个
['牡丹', '黑夜', '迷途', '福禄娃娃']
>>> member[:] #获取整个列表的拷贝
['小甲鱼', '牡丹', '黑夜', '迷途', '福禄娃娃']
>>> member2 = member #当member2改变时,member也会改变
>>> member2
['小甲鱼', '牡丹', '黑夜', '迷途', '福禄娃娃']
>>> member3 = member[:] #当member3改变时,不影响member,浅拷贝
>>> member3
['小甲鱼', '牡丹', '黑夜', '迷途', '福禄娃娃']
>>> member4 = member.copy() #当member4改变时,不影响member,浅拷贝
>>> member4
['小甲鱼', '牡丹', '黑夜', '迷途', '福禄娃娃']
>>> import copy
>>> x = [[1,2,3],[4,5,6],[7,8,9]]
>>> y = copy.deepcopy(x) #深拷贝,用于嵌套列表
>>> x[1][1] = 0
>>> x
[[1, 2, 3], [4, 0, 6], [7, 8, 9]]
>>> y
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
二维列表
>>> matrix = [[1,2,3],
[4,5,6],
[7,8,9]]
>>> matrix
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> for i in matrix:
for each in i:
print(each)
1
2
3
4
5
6
7
8
9
>>> for i in matrix:
for each in i:
print(each,end='')
print()
123
456
789
>>> matrix[0]
[1, 2, 3]
>>> matrix[0][0]
1
>>> matrix[1][1]
5
>>> matrix[2][2]
9
>>> A = [0] * 3
>>> A
[0, 0, 0]
>>> for i in range(3):
A[i] = [0] * 3
>>> A
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> B = [[0] * 3] * 3
>>> B
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> A[1][1] = 1
>>> A
[[0, 0, 0], [0, 1, 0], [0, 0, 0]]
>>> B[1][1] = 1
>>> B
[[0, 1, 0], [0, 1, 0], [0, 1, 0]]
>>> x = 'FishC'
>>> y = 'FishC'
>>> x is y
True #x,y的值存储在同一个位置
>>> m = [1,2,3]
>>> n = [1,2,3]
>>> m is n
False #m,n的值存储在不同的位置
>>> A[0] is A[1]
False #A的三个子列表存储在三个不同位置
>>> A[1] is A[2]
False
>>> B[0] is B[1]
True #B的三个子列表指向同一个位置
>>> B[1] is B[2]
True
列表推导式
>>> oho = [1,2,3,4,5]
>>> oho = [i * 2 for i in oho]
>>> oho
[2, 4, 6, 8, 10]
>>> x = [i for i in range(10)]
>>> x
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> x = [i + 1 for i in range(10)]
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> y = [i * 2 for i in 'FishC']
>>> y
['FF', 'ii', 'ss', 'hh', 'CC']
>>> matrix = [[1,2,3],
[4,5,6],
[7,8,9]]
>>> m = [n[1] for n in matrix]
>>> m
[2, 5, 8]
>>> z = [matrix[i][i] for i in range(len(matrix))]
>>> z
[1, 5, 9]
>>> s = [[0] * 3 for i in range(3)]
>>> s
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> even = [i for i in range(10) if i % 2 == 0]
>>> even
[0, 2, 4, 6, 8]
>>> words = ['Great','FishC','Beilliant','Excellent','Fantistic']
>>> fwords = [i for i in words if i[0] == 'F']
>>> fwords
['FishC', 'Fantistic']
>>> maritx = [[1,2,3],[4,5,6],[7,8,9]]
>>> flatten = [m for n in matrix for m in n] #降维展开
>>> flatten
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> [x + y for x in 'abc' for y in 'ABC'] #笛卡尔积
['aA', 'aB', 'aC', 'bA', 'bB', 'bC', 'cA', 'cB', 'cC']
>>> [[x,y] for x in range(10) if x % 2 == 0 for y in range(10) if y % 3 ==0]
[[0, 0], [0, 3], [0, 6], [0, 9], [2, 0], [2, 3], [2, 6], [2, 9], [4, 0], [4, 3], [4, 6], [4, 9], [6, 0], [6, 3], [6, 6], [6, 9], [8, 0], [8, 3], [8, 6], [8, 9]]