【问题标题】:Modify list length within for loop在 for 循环中修改列表长度
【发布时间】:2023-01-25 18:36:24
【问题描述】:

我知道不建议在遍历列表时更改列表,但我很好奇为什么下面的两个不同代码会给出不同的结果:

numbers = [1,2]
for i in numbers :
    if len(numbers)<3:
        numbers.append(3)
    print(i)

numbers = [1,2]
for i in numbers :
    if len(numbers)<3:
        numbers = [1,2,3]
    print(i)

第一个代码输出 1,2,3,第二个代码仅输出 1,2。

我希望这两种代码的行为与在两种情况下我正在修改我正在范围内的列表的内容完全相同。

【问题讨论】:

    标签: python list for-loop


    【解决方案1】:

    通过写入numbers = [1,2,3],您没有将预先存在的列表numbers的内容更改为[1, 2, 3],您销毁了该预先存在的列表并将[1, 2, 3]分配给了一个新变量。

    如果您这样做了numbers[:] = [1, 2, 3],您将保留旧列表并更改其内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-25
      相关资源
      最近更新 更多