如何使用整数比较列表中的所有项目而不使用for循环

rpt*_*nan 1 python for-loop list

我有几个长度不同的列表,我想将它们的每个项目与一个整数进行比较,如果任何一个项目高于所述整数,它会打破它所在的for循环.

for list in listoflists:
    if {anyiteminlist} > 70:
        continue    #as in skip to next list

    {rest of code here} 
Run Code Online (Sandbox Code Playgroud)

基本上,我需要说:"如果此列表中的任何内容超过70,请继续使用下一个列表循环"

Joh*_*ooy 16

不要list用作变量名,它会影响内置list().有一个内置函数any,在这里很有用

if any(x>70 for x in the_list):
Run Code Online (Sandbox Code Playgroud)

(和之间的部分)称为生成器表达式


DSM*_*DSM 3

好吧,我可能会使用生成器表达式来完成此操作,但由于还没有其他人建议这样做,并且它没有(显式)嵌套循环:

>>> 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]
Run Code Online (Sandbox Code Playgroud)

  • `max` 不会短路,但 `any` 会短路 - 也就是说,列表中第一个大于阈值的元素将导致 `any` 计算为 True。`max` 将查看每个值以找到最大值,即使列表的第一个元素超过阈值,并且实际上不需要查看其余元素。 (4认同)