有没有更好的解决方案来使用循环从列表中弹出一些项目?

Gre*_*rea 0 python loops list

第一次海报和最近在自学的初学者。

我查了有关堆栈溢出的问题,但没有看到完全相同的内容。我想遍历整个列表,如果某个项目满足条件,则将其弹出到不同的列表中。使用 for 循环不起作用,因为一旦删除了一个项目,列表中就没有足够的项目来完成初始范围。我写了这段代码(使用 while 的伪 for 循环),我认为它可以正常工作,但想知道它是否正确,或者是否有更好/更优雅/更有效的方法?

while i < len(mylist):
    if mylist[i] > 12:
        mydiscard.append(mylist.pop(i))
        continue
    i+=1
Run Code Online (Sandbox Code Playgroud)

Roc*_*mat 5

您可以尝试使用列表推导生成您想要的 2 个列表。

mydiscard = [x for x in mylist if x > 12]
mylist = [x for x in mylist if x <= 12]
Run Code Online (Sandbox Code Playgroud)

  • @GreyArea 它还对原始列表进行了两次传递,而不是一次...... (3认同)