【发布时间】:2019-07-22 12:26:51
【问题描述】:
我有一个 sn-p,我需要在其中迭代项目列表并删除其工作已完成的项目并继续循环其余项目。
根据 python,我可以通过l 来检查while 循环的条件,如下所示:-
l = [node1, node2, node3]
while l:
#do something
for t in l:
if t[wt] > 10:
l.remove(t)
但根据this guide,在迭代列表时修改列表不是一个好习惯。
所以我将代码更改为:-
l = [node1, node2, node3]
while len(l)>0:
#do something
for t in l:
if t[wt] > 10:
l.remove(t)
然后我看到下面的 pylint 警告:-
[pylint] C1801:不要使用 len(SEQUENCE) 作为条件值:- reference
现在应该采用什么方法来处理带有list 的while 循环,这不会违反上述任何做法?
【问题讨论】:
-
while l和while len(l) > 0'含义完全相同:在布尔上下文中计算为False的唯一列表是空列表。 -
@ThierryLathuille 我会请求您再次完成整个查询。
-
@Jean-François。请在标记重复之前仔细阅读问题陈述。
-
@PabitraPati 您的两个版本的代码完全相同,Pylint 对第二个版本的样式发出警告这一事实并没有改变这一点。问题仍然存在:您在迭代列表时删除了列表中的项目。简而言之,您可以将整个for循环替换为
l = [t for t in l if t[wt] <= 10]
标签: python