[英]Python nested loop with condition
my_list = [[1,2],[1,3],[1,3],[1,3]]
my_var = 7
我的目標是能夠查看my_var
是否大於my_list[0][1]
和my_list[1][1]
和my_list[2][1]
等處的所有位置。
my_list
長度可以變化, my_var
長度也可以變化,所以我認為循環是最好的選擇嗎?
* python的新手
all(variable > element for element in list)
或對於列表中列表的元素i
all(variable > sublist[i] for sublist in list)
如果任何一個元素太大,這樣做的優勢是盡早退出。 之所以行之有效,是因為... for ... in list
的... for ... in list
是Python功能強大且種類繁多的生成器表達式的實例。 它們類似於列表推導,但僅根據需要生成值。
all
本身僅檢查傳遞的迭代器中的所有值是否為真。 生成器表達式,列表推導,列表,元組和其他類型的序列都是可迭代的。
因此,第一條語句最終等同於調用如下函數
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
但是,生成器表達式通常更可取,更加簡潔和“慣用”。
您也可以這樣做:
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.