为什么从单个列表构造的双端队列返回其项目而不是列表本身?

Alb*_*yen -3 python deque

我运行下面的代码:

from collections import deque
q = deque([('0000',0)])
a = q.popleft()

print(a)
print(type(a))

b = [('0000',0)]

print(b)
print(type(b))
Run Code Online (Sandbox Code Playgroud)

输出是:

('0000', 0)
<class 'tuple'>
[('0000', 0)]
<class 'list'>
Run Code Online (Sandbox Code Playgroud)

我想知道为什么 type of ais tuple,但是bis list。我期待q.popleft()回来[('0000', 0)]

not*_*ess 6

deque接受一个迭代作为它的参数。然后解压那个可迭代对象以获取填充双端队列的元素。

即,如果你通过

[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

deque作为

q = deque([1, 2, 3])
Run Code Online (Sandbox Code Playgroud)

双端队列会123作为其元素。不是[1, 2, 3]

(因此,您不能deque使用多个参数初始化 a以用作其元素。)

如果你认为deque只是一个列表,

deque([1,2,3])相当于列表[1,2,3],不是[[1, 2, 3]]。因为它相当于[[1, 2, 3]],你必须打电话deque([[1,2,3]])