Pb在平等的同时

时间:2014-10-14 09:26:42

标签: python while-loop equality

是否有人解释了以下某个pb?

在下面的示例中,A必须与sign不同,但在while循环中,A等于sign。

我找到的解决方案是放置A = str(sign)。

sign =range(10)
i=0
while i<10:
    print i
    A = sign
    sign.remove(i)
    print A
    print sign
    i=i+1


0
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
1
[2, 3, 4, 5, 6, 7, 8, 9]
[2, 3, 4, 5, 6, 7, 8, 9]
...

1 个答案:

答案 0 :(得分:1)

列表是可变的。 这将说明为什么Asign相同。

>>> a = range(10)
>>> b = a
>>> id(b)
140597647738424
>>> id(a)
140597647738424
>>> a.remove(1)
>>> b
[0, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a
[0, 2, 3, 4, 5, 6, 7, 8, 9]

如果您想要更改Asign

,请尝试切片

这样

>>>a = range(10)
>>>b = a[:]

>>> id(b)
140597646666280
>>> id(a)
140597646666496