运行以下代码会在python 2.7和3.5中引起一些奇怪的行为:
class Test():
def __init__(self):
self.arr = [1,2,3,4,5,6]
def worker(self):
for x in self.arr:
print (self.arr.pop(0))
b = Test()
b.worker()
将导致以下输出
>>> b.worker()
1
2
3
>>> b.worker()
4
5
>>> b.worker()
6
以下代码示例按预期工作时,一次打印整个数组:
class Test():
def __init__(self):
self.arr = [1,2,3,4,5,6]
def worker(self):
for x in range(len(self.arr)):
print (self.arr.pop(0))
b = Test()
b.worker()
>>> b.worker()
1
2
3
4
5
6
这是怎么回事,为什么调用worker()时第一个代码示例不打印并减少(弹出)整个数组?