执行list.pop()时出现意外结果?

时间:2018-02-08 05:14:53

标签: python python-3.x python-2.7 variable-assignment

我正在尝试分配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

3 个答案:

答案 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'之后永远改变,即对于程序的其余部分。