簡體   English   中英

帶有條件的Python嵌套循環

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM