首页 > 解决方案 > 循环在迭代整个列表之前停止

问题描述

我试图删除 res[1] 中低于 120 的所有值,并删除 res[0] 中相同索引的值,由于某种原因循环停止..并且不会继续删除列表的末尾。

多谢您的支持

这是代码:

def func ():
    res=([30.0,40.0,49.0,28.0,30.0,57.0], [0, 30.0,400.0,160.0, 30.0, 30.0])
    for i in res[1]:
        if i<120:
            ind=res[1].index(i)
            res[1].remove(i)
            del(res[0][ind])
        else:
            pass

    return res 

预期的结果是([49.0, 28.0], [400.0, 160.0]),但我有这个结果([49.0, 28.0, 30.0, 57.0], [400.0, 160.0, 30.0, 30.0])

标签: pythonlistloops

解决方案


而不是检查i < 120,检查i >= 120并简单地将传递的项目附加到新列表中并返回带有这些列表的元组。

In [179]: def func(): 
     ...:     res=([30.0,40.0,49.0,28.0,30.0,57.0], [0, 30.0,400.0,160.0, 30.0, 30.0]) 
     ...:     r0, r1 = [], [] 
     ...:     for i in res[1]: 
     ...:         if i >= 120: 
     ...:             ind=res[1].index(i) 
     ...:             r1.append(i) 
     ...:             r0.append(res[0][ind])
     ...:     return (r0, r1) 
     ...:      

In [180]: func()
Out[180]: ([49.0, 28.0], [400.0, 160.0])

推荐阅读