0
>>> l1 = ['A', 'B', 'C']
>>> l2 = ['G', 'F', 'K', 'J']
>>> for (i, j) in zip(l1, l2):
      print(i, j)
      l1.pop(0)
      print(l1)
      print(l2)

输出为:'A' AG ['B', 'C'] ['G', 'F', 'K', 'J'] 'B' CF ['C'] ['G', 'F' , 'K', 'J']

预期:'A' AG # 第 2 行 ['B', 'C'] ['G', 'F', 'K', 'J'] 'B'
CF # 第 3 行 ['C'] ['G '、'F'、'K'、'J']

l2 仍然有 ['C']。为什么 ?此外,在第 2 行,当 A 已经弹出时,A 是怎么出现的。如果这意味着我在弹出之前已经取了值,那么为什么第 3 行有 C F。它应该是 B F。

请解释。我在这里完全糊涂了。

4

1 回答 1

0

我没有看到问题,因为您在执行 zip 函数后弹出 A 。因此,即使您在第一次迭代中删除所有元素l1l2循环也会执行相同的操作,因为zip()函数在第一次迭代之前已经返回了值。range()zip()或您在 for in 上提供的任何函数,它将首先执行,然后迭代,修改原始值不会改变任何内容,因为它已经作为单独的值返回。

于 2020-10-10T13:31:06.490 回答