python collections.deque()传入列表
时间: 2024-08-17 09:01:31 浏览: 97
`collections.deque()`是Python标准库中的双端队列(deque,即double-ended queue),它非常适合在两端添加或删除元素。如果你想要将列表作为参数传递给deque,可以这样做:
```python
from collections import deque
# 创建一个空的deque
my_list = [1, 2, 3, 4, 5]
my_deque = deque(my_list)
# 现在my_deque就是一个双向队列,你可以像操作列表一样在两端进行插入和弹出操作
# 如在开头添加元素
my_deque.appendleft(0)
print(my_deque) # 输出: [0, 1, 2, 3, 4, 5]
# 或者在结尾添加
my_deque.append(6)
print(my_deque) # 输出: [0, 1, 2, 3, 4, 5, 6]
# 从开头移除元素
first_element = my_deque.popleft()
print(first_element) # 输出: 0
# 从结尾移除元素
last_element = my_deque.pop()
print(last_element) # 输出: 6
```
相关问题
python collections.
Python的collections模块是Python标准库中的一个模块,它提供了一些额外的数据类型,用于扩展内置的数据类型(如字典、列表、集合等),以及提供了一些额外的容器对象(如命名元组、有序字典等)。
该模块中最常用的数据类型是Counter、defaultdict、OrderedDict和namedtuple。下面简要介绍一下这些数据类型:
1. Counter:Counter是一个字典的子类,用于计数可哈希对象的出现次数。它可以接受任何可哈希的对象作为元素,并将其存储为字典的键,出现次数作为字典的值。
2. defaultdict:defaultdict是一个字典的子类,它覆盖了普通字典的__missing__方法,当访问不存在的键时,它会返回一个默认值(通过传入一个函数来指定默认值的类型)。
3. OrderedDict:OrderedDict是一个有序字典,它会记住元素的插入顺序,并且在迭代时会按照插入顺序返回元素。
4. namedtuple:namedtuple是一个函数,它返回一个带有命名字段的元组子类。它可以为元组中的每个字段指定名称,并且可以通过名称访问字段的值,使得代码更易读。
除了上述数据类型之外,collections模块还提供了其他一些有用的类和函数,如deque、ChainMap、Counter等,可以根据具体需求进行使用。
Python中deque
deque(双端队列)是Python标准库collections模块中的一种数据结构,它可以在队列的两端进行添加和删除操作,因此可以用于实现栈和队列。
deque支持的操作包括:
1. append(x):在deque的右端添加元素x。
2. appendleft(x):在deque的左端添加元素x。
3. clear():清空deque。
4. count(x):返回deque中元素x的个数。
5. extend(iterable):在deque的右端添加可迭代对象iterable中的所有元素。
6. extendleft(iterable):在deque的左端添加可迭代对象iterable中的所有元素,注意添加顺序与iterable中的顺序相反。
7. pop():删除并返回deque右端的元素。
8. popleft():删除并返回deque左端的元素。
9. remove(x):删除deque中第一个值为x的元素,如果没有找到则抛出ValueError异常。
10. reverse():将deque中的元素反转。
11. rotate(n=1):将deque中的元素向右移动n步,如果n为负数则向左移动。移动的元素会从deque的一端移动到另一端,因此deque的长度不变。
使用deque需要先导入collections模块:
```
from collections import deque
```
然后可以通过以下方式创建一个deque对象:
```
d = deque()
```
也可以通过传入一个可迭代对象来初始化deque:
```
d = deque([1, 2, 3])
```
使用deque的操作与列表类似,例如:
```
d.append(4)
d.appendleft(0)
d.extend([5, 6])
d.extendleft([-1, -2])
d.pop()
d.popleft()
d.remove(3)
d.reverse()
d.rotate(2)
```
注意,由于deque支持在两端进行添加和删除操作,因此它的时间复杂度比列表更优秀,特别是在涉及到大量添加和删除操作的场景中。
阅读全文