我正在处理一个deque,并想知道为什么下面的代码会像代码那样工作:
import collections
d = collections.deque()
d.append("a")
d.append("b")
d[-1] += d.pop()
print(d)输出:deque(['bb'])
这让我感到惊讶,因为我原以为代码会导致deque(['ab'])而不是deque(['bb'])。为什么会发生这种事?
发布于 2020-08-10 05:26:30
这条线
d[-1] += d.pop()与这一行相等。
d[-1] = d[-1] + d.pop()python首先得到d[-1],那就是'b'
之后,运行pop方法d,该方法在python集的末尾返回'b' ( 'bb' for d[-1] )
如果您想要pop第一项,请使用popleft()函数。
编辑代码:
from collections import deque
d = deque()
d.append("a")
d.append("b")
d[-1] = d.popleft() + d[-1]
print(d)产出:
deque(['ab'])发布于 2020-08-10 05:38:10
答案很简单:
如果你在前面再加一个,这是很容易解释的:
import collections
d = collections.deque()
d.append('z')
d.append('a')
d.append('b')
print ("d -1 pos is : "+d[-1])
d[-1]+=d.pop()
print (d)输出:d -1 pos是:B deque('z','bb')
https://stackoverflow.com/questions/63334492
复制相似问题