对于self.array中的x-奇怪的行为

时间:2019-03-02 22:31:52

标签: python arrays class

运行以下代码会在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()时第一个代码示例不打印并减少(弹出)整个数组?

0 个答案:

没有答案