如何在不使用for循环的情况下将列表中的所有项与整数进行比较

7 投票
6 回答
58547 浏览
提问于 2025-04-17 12:55

我有几个长度不一样的列表,我想把每个列表里的每个项目和一个整数进行比较。如果列表中的任何一个项目大于这个整数,就要中断当前的循环。

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

    {rest of code here} 

简单来说,我想说:“如果这个列表里有任何一个数大于70,就继续处理下一个列表。”

6 个回答

1

你可以把它简化成这样 :D

for good_list in filter(lambda x: max(x)<=70, listoflists):
   # do stuff
23

不要把 list 当作变量名,因为这样会覆盖掉 Python 自带的 list() 函数。Python 有一个叫 any 的内置函数,在这里很有用。

if any(x>70 for x in the_list):

() 之间的部分叫做 生成器表达式

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]

撰写回答