有没有办法在python中使用带有两个for循环的“ all”或“ any”函数

时间:2019-08-06 14:32:22

标签: python

我正在编写一些python代码(这与我编写的内容无关紧要),并且遇到一种情况,我需要检查某些条件是否是针对二维列表内所有列表的特定索引的。因此,我当然知道all()函数,但是这种事情需要两个for循环,例如:

for i in range(len(list_name)):
    if all(small_list[i] % 2 == 0 for small_list in list_name):
        # do something

我的问题是,是否有任何方法可以在allany中执行两个循环而又不将循环之一写入all函数之外?

2 个答案:

答案 0 :(得分:2)

所以您要说的是,您需要检查all(),但要检查2D列表中的每个元素。简单的嵌套all()是否可以正常工作?

if all(all(element % 2 == 0 for element in small_list) 
       for small_list in list_name):

或者,更紧密地镜像给定代码,

if all(all(small_list[i] % 2 == 0 for small_list in list_name) for i in range(len(list_name)))

正如@chepner在评论中指出的那样,您实际上不需要第二个all-您可以将多个子句放在这样的理解中:

if all(small_list[i] % 2 == 0 
       for small_list in list_name 
       for i in range(len(list_name))):

答案 1 :(得分:1)

  

...检查二维列表中所有列表特定索引是否为[true] ...

从您写的内容来看,我们实际上根本不需要两个for循环。

specific_index = 3
if all(small_list[specific_index] % 2 == 0 for small_list in list_name):
    doSomething()

用您选择的幻数代替specific_index