首页 > 代码库 > collections之单向&双向序列

collections之单向&双向序列

这里是双向队列
import collections
#创建一个双向队列
obj = collections.deque()

#给这个队列的右边添加一个元素
obj.append(‘11‘)
#给这个队列的左边添加一个元素
obj.appendleft(‘a‘)
obj.appendleft(‘11‘)
print(obj)
# deque([‘11‘, ‘a‘, ‘11‘])

#统计一个队列中某个元素的数量
ret = obj.count(‘11‘)
print(ret)
# 2


#extend,可以同时添加多个元素,在队列的右边添加list中的元素

obj.extend([‘aa‘,‘bb‘,‘cc‘])
print(obj)

# deque([‘11‘, ‘a‘, ‘11‘, ‘aa‘, ‘bb‘, ‘cc‘])

#extendleft,可以同时添加多个元素,在队列的左边添加list中的元素
obj.extendleft([‘00‘,‘11‘,‘bb‘])
print(obj)

# deque([‘bb‘, ‘11‘, ‘00‘, ‘11‘, ‘a‘, ‘11‘, ‘aa‘, ‘bb‘, ‘cc‘])


#index,取某个元素的在队列中的位置

ret = obj.index(‘bb‘)
print(ret)

# 0


#insert,往队列中插入一个元素

obj.insert(0,‘ccc‘)
print(obj)

# deque([‘ccc‘, ‘bb‘, ‘11‘, ‘00‘, ‘11‘, ‘a‘, ‘11‘, ‘aa‘, ‘bb‘, ‘cc‘])


#pop,popleft,,从右边删除队列中的一个元素,从左边删除队列中的一个元素,移除并拿到
ret = obj.pop()
print(obj)
# deque([‘ccc‘, ‘bb‘, ‘11‘, ‘00‘, ‘11‘, ‘a‘, ‘11‘, ‘aa‘, ‘bb‘])
print(ret)
# cc
ret = obj.popleft()
print(obj)
# deque([‘bb‘, ‘11‘, ‘00‘, ‘11‘, ‘a‘, ‘11‘, ‘aa‘, ‘bb‘])
print(ret)
# ccc


#remove,删除队列中的某个元素

#reverse,反转队列

#rotate,从队列的右边拿数据放在左边,参数为3,那么先把右边的bb放在左边,然后在把
#aa放在左边,最后在把11放在左边

print(obj)
# deque([‘bb‘, ‘11‘, ‘00‘, ‘11‘, ‘a‘, ‘11‘, ‘aa‘, ‘bb‘])
obj.rotate(3)
print(obj)
# deque([‘11‘, ‘aa‘, ‘bb‘, ‘bb‘, ‘11‘, ‘00‘, ‘11‘, ‘a‘])


#这里是单向队列


import queue
#创建一个单向队列
obj = queue.Queue()
print(type(obj))
# <class ‘queue.Queue‘>
obj.put(‘a‘)
obj.put(‘b‘)
obj.put(‘c‘)
print(obj)

#qsize
print(obj.qsize())
# 3
#empty

#get

print(obj.get())
# a
print(obj.get())
# b
#full

collections之单向&双向序列