我有两个长度不同的列表,我想用一个整数比较它们的每个项目,如果任何一个项目高于所述整数,它会打破它所在的for循环。
for list in listoflists:
if {anyiteminlist} > 70:
continue #as in skip to next list
{rest of code here}
基本上,我需要说:“如果此列表中的任何内容超过70,请继续使用下一个列表循环”
答案 0 :(得分:15)
不要将list
用作变量名称,它会隐藏内置list()
。有一个名为any
的内置函数,在这里很有用
if any(x>70 for x in the_list):
(
和)
之间的部分称为generator expression
答案 1 :(得分:1)
您可以使用内置函数any,如下所示:
for list in listoflists:
if any(x < 70 for x in list):
continue
any
函数执行短路评估,因此只要列表中的整数符合条件,它就会返回True
。
此外,您不应使用变量list
,因为it is a built-in function。
答案 2 :(得分:1)
好吧,我可能会使用生成器表达式,但是因为还没有其他人建议这个,并且它没有(显式)嵌套循环:
>>> lol = [[1,2,3],[4,40],[10,20,30]]
>>>
>>> for l in lol:
... if max(l) > 30:
... continue
... print l
...
[1, 2, 3]
[10, 20, 30]
答案 3 :(得分:1)
您可以将其缩短为:D
for good_list in filter(lambda x: max(x)<=70, listoflists):
# do stuff
答案 4 :(得分:0)
如果您使用的是python 2.5或更高版本,则可以将any()函数与list comprehensions一起使用。
for list in listoflists:
if any([i > 70 for i in list]):
continue
答案 5 :(得分:0)
使用内置any
是最明智的方法。或者,您可以嵌套for循环并突破它(for-else构造的少数用法之一)。
for lst in listoflists:
for i in lst:
if i > 70:
break
else:
# rest of your code
pass