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

时间:2012-02-13 02:38:14

标签: python list for-loop

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

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

    {rest of code here} 

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

6 个答案:

答案 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