2010-10-09 49 views
1
my_list = [[1,2],[1,3],[1,3],[1,3]] 
my_var = 7 

我的目標Python的嵌套循環是要看到,如果my_var比所有位置中的my_list[0][1]my_list[1][1]my_list[2][1]等大。與條件

my_list可以變化的長度和my_var也可以有所不同,所以我想循環是最好的選擇?

*很新的Python

回答

4
all(variable > element for element in list) 

或列表的元素i列表

all(variable > sublist[i] for sublist in list) 

這有早踢出如果任何元素太大的優勢之內。這是可行的,因爲... for ... in list是Python強大且多種多樣的generator expressions的實例。它們與list comprehensions類似,但只有根據需要生成值。

all本身只是檢查它是否傳遞的iterable中的所有值都爲真。生成器表達式,列表解析,列表,元組和其他類型的序列都是可迭代的。

所以第一個語句結束是相當於調用等

def all_are_greater_than_value(list, value): 
    for element in list: 
     if element <= value: 
      return False 
    return True 

all_are_greater_than_value(list, variable)函數...

或簡單地

all_greater = True 
for element in list: 
    if element <= value: 
     all_greater = False 
     break 

然而,發電機表達通常優選,更簡潔和「慣用」。

+0

+1。我甚至沒有想過這個 – aaronasterling 2010-10-09 04:52:36

+0

這很酷。謝謝! – Dtour 2010-10-09 04:59:53

+0

這是Python閱讀英文的好例子。 – intuited 2010-10-09 05:03:51

1

你能做到這樣也:

my_list = [[1,2],[1,3],[1,3],[1,3]] 
my_var = 7 
print all(all(x < my_var for x in sublist) for sublist in my_list)