我正在尝试分配a = x和b = x.pop();虽然我得到了意想不到的任务。你能解释一下吗?
>>> x = [10, 11, 12, 13]
>>> a, b = x, x.pop(2)
>>> print a
[10, 11, 13] # Shouldn't I get a = [10, 11, 12, 13]?
>>> print b
12
答案 0 :(得分:4)
由于你是指直接列表,它正在弹出并分配什么 留在列表中。如果您有列表作为副本,请尝试: -
x = [10, 11, 12, 13]
a,b = x.copy(),x.pop(2)
print(a) # your expected output
答案 1 :(得分:0)
当你说 a = x 时, a 和 x 都指向同一个列表,因此修改 a 还将修改 x 。如果你说 a = list( x ) 然后 a 将是列表 x 的单独副本。
答案 2 :(得分:0)
你会得到= [10,11,13],b = 12。
执行' b = x.pop()'后,x的值会弹出。并且x在执行值' b'之后永远改变,即对于程序的其余部分。