1.列表方法使得列表可以很方便的作为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)。用 append() 方法可以把一个元素添加到堆栈顶。用不指定索引的 pop() 方法可以把一个元素从堆栈顶释放出来。
a=[1,2,3]
a.append(4)
a.pop()#后放入的先取出
2.双向队列deque
也可以把列表当做队列用,在队列里第一加入的元素,第一个取出来;但是拿列表用作这样的目的效率不高。在列表的最后添加或者弹出元素速度快,然而在列表里插入或者从头部弹出速度却不快(因为所有其他的元素都得一个一个地移动)。可用双向队列deque
from collections import deque
a=deque([1,3]) /a=deque()
方法
- a.append() 尾部添加
- a.appendleft()
- a.pop()
- a.popleft() 头部删除
from collections import deque
a=deque([1,2,3])
a.append(4)
a.popleft()#先放入的先取出
3推导式
每个元祖/列表/字典/集合推导式都在 for 之后跟一个表达式,然后有零到多个 for 或 if 子句。
a=[i for i in range(3)]
print(a)
[0, 1, 2]
b={i:j for i in "abcd" for j in range(4)}
print(b)
{'a': 3, 'b': 3, 'c': 3, 'd': 3}
c=set(i for i in range(5))
print(c)
{0, 1, 2, 3, 4}
d=tuple(i for i in range(5))
print(d)
(0, 1, 2, 3, 4)
e=(i for i in range(5)) #生成器
print(e)
<generator object <genexpr> at 0x03F57330>
b=[1,2,3,4]
b=[i*i for i in b]
print(b)
[1, 4, 9, 16]
c=[1,2,3,4]
c=[[i,i*i] for i in b]
print(c)
[[1, 1], [4, 16], [9, 81], [16, 256]]
d=[1,2,3,4]
d=[i*i for i in d if i>2]
print(d)
[9, 16]
x1=[1,2,3]
x2=[2,3,4]
h=[x1[i]+x2[i] for i in range(len(x1))]
print(h)
[3, 5, 7]
pi=[round(355/113, i) for i in range(1, 6)]
print(pi)
[3.1, 3.14, 3.142, 3.1416, 3.14159]
#转置矩阵
a=[[1,2],[3,4],[5,6]]
a2=[[i[j] for i in a] for j in range(2)]
#相当于
a3=[]
for j in range(2):
a3.append([i[j] for i in a])
[[1, 3, 5], [2, 4, 6]]
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]