簡體   English   中英

是否有更短的方法來初始化此循環?

[英]Is there a shorter way to initialize this loop?

是否有更短的方法來初始化此循環? 感覺就像輸入“val”四次這樣一個簡單的聲明可能不是最快的方法。

(該示例是用於解釋我的觀點的隨機代碼,實際的循環內容會復雜得多。)

values=[4,8,0,1,5,8,3]
for val in [val for val in values if val!=1]:
    print(val)

我想到生成器表達式(不需要創建另一個迭代列表)和filter()函數 (創建一個迭代器):

values = [4,8,0,1,5,8,3]

# generator expression instead of list expressen - is more efficient
for val in (val for val in values if val != 1):
    print(val)

# filter the list  - creates an iterator
for val in filter(lambda x:x != 1, values):
    print (val)

輸出:

4
8
0
5
8
3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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