2010-10-10 19 views
13

我需要使用[f(char) for char in string]語法從python中的字符串構建列表,我希望能夠忽略(不插入列表中)f(x)的值等於None在python中構建列表時忽略元素

我該怎麼做?

回答

27

我們可以創建一個「子查詢」。

[r for r in (f(char) for char in string) if r is not None] 

如果你允許所有的假值(0,假,無等)一併忽略,filter可用於:

filter(None, (f(char) for char in string)) 
# or, using itertools.imap, 
filter(None, imap(f, string)) 
+0

我喜歡的第一個,謝謝!非常乾淨,只是建立一個迭代器作爲中間件。我一直在做兩行,或者如果f(x)不是None,'[f(x)for x in l,不必要地執行操作兩次。 – 2017-02-21 04:53:27