Python的列表数据类型包含更多的方法。这里是所有的列表对象方法:
list.append(x):把一个元素添加到列表的结尾,相当于a[len(a):] = [x]
list.extend(L):将一个给定列表中的所有元素都添加到另一个列表中,相当于a[len(a):] = L
list.insert(i,x) :在指定位置插入一个元素。参数 i 是插入到其前面的那个元素的索引,如:a.insert(0,x)会插入到整个列表之前,a.insert(len(a),x)相当于a.append(x)
list.remove(x):删除列表中值为x的第一个元素,如果没有这样的元素,返回一个错误
list.pop([i]): 从列表的指定位置删除元素,并将其返回。如果没有指定索引,a.pop()返回最后一个元素,元素随即从列表中被删除([ i ]表示参数可选)
list.clear(): 从列表中删除所有元素。相当于del a[:]
list.index(x):返回列表中第一个值为x的元素的索引,如果没有匹配的元素返回一个错误
list.count(x):返回x在列表中出现的次数
list. sort():对列表中的元素进行排序
list.reverse():对列中的的元素进行倒序排列
list.copy():返回列表的一个浅拷贝。相当于a[:]
1.把列表当做堆栈使用
列表方法使得列表可以作为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出),用append()方法可以把一个元素添加到堆栈顶,用不指定索引的pop()方法可以把一个元素从堆栈顶释放出来。例如:
#把列表当做堆栈
stack = [3,4,5]
stack.append(6)
stack.append(7)
print(stack)
print(stack.pop())
print(stack)
print(stack.pop())
print(stack)
结果:
[3, 4, 5, 6, 7]
7
[3, 4, 5, 6]
6
[3, 4, 5]
2.把列表当做队列使用
队列作为特定的数据结构,最先进入的元素最先释放(先进先出)。但是列表这样用效率不高,相对来说从列表末尾添加和弹出快,在头部插入和弹出慢(为了一个元素,移动整个列表中的所有元素)。
实现队列,要使用collections.deque,它为在首尾两端快速插入和删除而设计。例如:
#把列表当做队列
from collections import deque
queue = deque(["Eric","John","Michael"])
queue.append("Terry")
queue.append("James")
print(queue.popleft())
print(queue.popleft())
print(queue)
结果:
Eric
John
deque(['Michael', 'Terry', 'James'])
3.列表推导式
列表解析中的第一个表达式可以是任何表达式,包括列表解析
下面是三个长度为4的列表组成的3*4的矩阵:
matrix = [
[1,2,3,4],
[5,6,7,8],
[9,10,11,12]
]
如果想交换行和列,可以用嵌套的列表推导式:
res = [[row[i] for row in matrix] for i in range(4)]
print(res)
结果:
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
相当于:
transposed = []
for i in range(4):
transposed_row = []
for row in matrix:
transposed_row.append(row[i])
transposed.append(transposed_row)
print(transposed)
结果:
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
使用内置函数zip()
print(list(zip(*matrix)))
结果:
[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]