是否有人解释了以下某个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]
...
答案 0 :(得分:1)
列表是可变的。
这将说明为什么A
和sign
相同。
>>> 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]
如果您想要更改A
和sign
这样
>>>a = range(10)
>>>b = a[:]
>>> id(b)
140597646666280
>>> id(a)
140597646666496