簡體   English   中英

Python列表理解:測試函數返回

[英]Python list comprehension: test function return

有沒有一種方法可以測試列表(或字典)理解中的函數返回? 我想避免這樣寫:

lst = []
for x in range(10):
  bar = foo(x)
  if bar:
    lst.append(bar)

並改用列表推導。 顯然,我不想寫:

[foo(x) for x in range(10) if foo(x)]

所以?

[foo(x) for x in range(10) if ??? ]

怎么樣

filter(None, map(foo, range(10)))

如果您不想保留中間列表,請將map()替換為itertools.imap() 並通過itertools.ifilter() ,整個事情可以變成一個生成器。

itertools.ifilter(None, itertools.imap(foo, range(10)))

只需生成一個生成器來計算值,然后再從生成器中構建過濾列表。

例:

# create generator via generator expression
results = (foo(x) for x in xrange(10))
# build result list, not including falsy values
filtered_results = [i for i in results if i]

以供參考:

暫無
暫無

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

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