【发布时间】:2021-06-22 14:27:30
【问题描述】:
我注意到以下会引发一个可迭代的错误。
q = deque([1,2,3])
x, y, z = q.popleft()
# TypeError: 'int' object is not iterable
但下面的代码我认为是相同的操作:
q = deque()
deque.append([1,2,3])
x, y, z = q.popleft()
以上两种方式有什么区别?
提前感谢您的帮助。
【问题讨论】:
我注意到以下会引发一个可迭代的错误。
q = deque([1,2,3])
x, y, z = q.popleft()
# TypeError: 'int' object is not iterable
但下面的代码我认为是相同的操作:
q = deque()
deque.append([1,2,3])
x, y, z = q.popleft()
以上两种方式有什么区别?
提前感谢您的帮助。
【问题讨论】:
q.popleft() 返回双端队列的第一个元素。第一种情况是int,第二种情况是整数列表。你应该在第一种情况下写:x, y, z = q。
【讨论】:
q = deque() 时,你写q = deque([]) 是一样的。你用一个空数组初始化它。当你打电话给q.append([1,2,3]) 时,如果你写q = deque([[1, 2, 3]]) 也是一样的。所以[1, 2, 3] 这里不是双端队列本身,而是双端队列的第一个元素。这就是区别