python collections deque_Python标准库collections.deque自用整理

Python 3.7.7 文档

collections - Container datatypes

deque读作“deck”(“double-ended queue”)

Returns a newdequeobject initialized left-to-right (using append()) withdata from iterable. If iterarble is not specified, the newdeque is empty.

Deques support thread-safe, memory efficient appends and pops from either side of the deque with approximately the same O(1) performance in either direction.

Method

作用

maxlen

deque的最大长度,maxlen值为None则没有大小限制

append(x)

在deque右端加入元素x

appendleft(x)

在deque左端加入元素x

clear()

清空队列,deque长度变为0

copy()

Create a shallow copy of the deque

count(x)

计算deque中等于x的元素的数量

extend(iterable)

在右端逐个添加iterable参数中的元素

extendleft(iterable)

在左端逐个添加iterable参数中的元素 ;添加部分的显示顺序和extend中相反

index(x[, start[, stop]])

与list的index方法相似 or 返回ValueError

insert(i, x)

与list的insert方法相似 or 插入元素使得长度超过maxlen时, 返回IndexError

pop()

删除并返回最右端元素 or 无元素时,返回IndexError

popleft()

删除并返回最左端元素 or 无元素时,返回IndexError

remove(x)

删除第一个出现的x值,没有的话返回ValueError

reverse()

Reverse the elements of the deque in-place and then return None

rotate(n=1)

n值为正,向右转动;n值为负,向左转动;rotate(n=-1)等价于d.appendleft(d.pop()), rotate(n=-1)等价于d.append(d.popleft())

Deques support iteration, pickling, len(d), reversed(d), copy.copy(d), copy.deepcopy(d), membership testing with the in operator, and subscript references such as d[-1].

Indexed access is O(1) at both ends but slows to O(n) in the middle. For fast random access, use lists instead.

>>> from collections import deque

# 创建 deque

>>> d = deque()

>>> d

deque([])

>>> d = deque(maxlen=None)

>>> d

deque([])

>>> d = deque(maxlen = 5)

>>> d = deque('python', maxlen = 5)

>>> d

deque(['y', 't', 'h', 'o', 'n'], maxlen=5)

>>> d = deque((2,5))

>>> d

deque([2, 5])

>>> d = deque((2,))

>>> d

deque([2])

# 其它

>>> d = deque('python')

>>> for elem in d:

print(elem.upper())

P

Y

T

H

O

N

>>> d.pop()

'n'

>>> d.popleft()

'p'

>>> d[0] # 支持indexed access

'y'

>>> d[-1]

'o'

>>> list(reversed(d)) # 支持reversed(d),支持list()

['o', 'h', 't', 'y']

>>> d

deque(['y', 't', 'h', 'o']) # d没有发生变化

>>> 'h' in d #至此用in operator来检测membership

True

>>> d.rotate(-1)

>>> d

deque(['t', 'h', 'o', 'y'])

>>> deque(reversed(d))

deque(['y', 'o', 'h', 't'])

>>> d.clear()

>>> d.pop()

Traceback (most recent call last):

File "", line 1, in

d.pop()

IndexError: pop from an empty deque

>>> d.extend('abc')

>>> d

deque(['a', 'b', 'c'])

>>> d.extendleft('abc')

>>> d

deque(['c', 'b', 'a', 'a', 'b', 'c'])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值