【问题标题】:Can I append items to a list that I am looping through in Python? [duplicate]我可以将项目附加到我在 Python 中循环的列表中吗? [复制]
【发布时间】:2011-05-08 23:59:16
【问题描述】:

可能重复:
Python: Adding element to list while iterating

这似乎不起作用,但我不知道为什么:

for n in poss:
         poss.append(n+6)

是否有一些规则规定我不能将项目附加到我当前正在循环的列表中?

【问题讨论】:

  • 需要使用副本。使用切片:poss[::] 元组:tuple(poss) 或重复列表:list(poss) 与切片形式相同...

标签: python


【解决方案1】:

在遍历列表时附加到列表将进入无限循环,因为您在每次迭代中都会向循环添加更多元素。

您应该迭代列表的副本。例如,尝试以下操作:

for n in tuple(poss):
    poss.append(n+6)

【讨论】:

    【解决方案2】:

    您的代码确实有效,但永远不会结束,因为 poss 不断增长。
    试试:

    poss = [1,2]
    
    for n in poss:
        poss.append(n+6)
        if n > 10:
            print poss
            break
    

    产生:

    [1, 2, 7, 8, 13, 14, 19]
    

    【讨论】:

      猜你喜欢
      • 2017-02-12
      • 2023-01-07
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 2019-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多