【问题标题】:For loop/if statement skipping elements in list?For循环/if语句跳过列表中的元素?
【发布时间】:2022-06-30 00:28:18
【问题描述】:

我只是在做一个简单的 python 练习,看起来像这样:

list1 = [47, 48, 49, 50, 51, 52, 53, 54]
list2 = []

for num in list1:
  if num >= 50:
    list1.remove(num)
    list2.append(num)

print(list1)
print(list2)

列表 1 应仅包含小于 50 的数字,列表 2 应包含大于或等于 50 的数字。但是,输出另有说明:

List1: [47, 48, 49, 51, 53]
List2: [50, 52, 54]

我该如何解决这个问题?

【问题讨论】:

  • 不要修改您正在迭代的列表(除非您使用索引向后迭代)

标签: python python-3.x list for-loop if-statement


【解决方案1】:

这不是一个好方法。您正在迭代期间从列表中删除项目。

当您在循环期间从列表中删除项目时。它将影响列表的索引。这就是为什么你会看到你的代码跳过了一些项目。

使用列表推导更容易:

list1 = [47, 48, 49, 50, 51, 52, 53, 54]


list2 = [i for i in list1 if i>=50]
list1 = [i for i in list1 if i<50]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 2019-06-09
    相关资源
    最近更新 更多