python标准库:collections

collections.Generator

from collections import Iterator,Generator,Iterable
a = (a*2 for a in range(10))
print(isinstance(a, Iterable)) # True
print(isinstance(a, Iterator)) # True
print(isinstance(a, Generator)) # True

collections.deque

deque是双端队列(double-ended queue)的缩写,由于两端都能编辑,deque既可以用来实现栈(stack)也可以用来实现队列(queue)。

1.创建deque序列:

from collections import deque
d=deque()

2.append(往右边添加一个元素)
appendleft(往左边添加一个元素)

d=deque()
d.append(3)
d.append(8)
d.append(1)

那么此时d=deque([3,8,1]),len(d)=3,d[0]=3,d[-1]=1

d.appendleft(3)

deque([3, 3, 8, 1])
3.两端都使用pop:
pop(获取最右边一个元素,并在队列中删除)
popleft(获取最左边的一个元素,并在队列中删除)

d=deque(‘12345’)

那么d=deque([‘1’, ‘2’, ‘3’, ‘4’, ‘5’])

d.pop()抛出的是’5’,d.leftpop()抛出的是’1’,可见默认pop()抛出的是最后一个元素。

4.限制deque的长度

d=deque(maxlen=20)
for i in range(30):
    d.append(str(i))

此时d的值为d=deque([‘10’, ‘11’, ‘12’, ‘13’, ‘14’, ‘15’, ‘16’, ‘17’, ‘18’, ‘19’, ‘20’, ‘21’, ‘22’, ‘23’, ‘24’, ‘25’, ‘26’, ‘27’, ‘28’, ‘29’], maxlen=20),可见当限制长度的deque增加超过限制数的项时,另一边的项会自动删除。

5.添加list各项到deque中:

d=deque([1,2,3,4,5])
d.extend([0])

那么此时d=deque([1,2,3,4,5,0])

d.extendleft([6,7,8])

此时d=deque([8, 7, 6, 1, 2, 3, 4, 5, 0])

通过以上的一些操作,我们大致可以了解deque()的性质了。

猜你喜欢

转载自blog.csdn.net/syqnyue/article/details/87530131