2013-03-20 35 views
0

在Python中,什麼是最優先(Python化)的方式來做到以下幾點:優雅列表操作

給你一個列表。如果列表不爲空,則列表中的所有項目都保證爲字符串。列表中的每個項目都是空字符串,或者如果在項目上調用isdigit(),則保證返回True

從這樣的列表開始,最後一個列表的最優雅的方式是什麼,以便它擁有來自原始列表中的所有項目,但空字符串除外?

+1

我想無論我試過是風馬牛不相及的問題。 – chefsmart 2013-03-20 11:06:39

+0

它可能是相關的。很高興向您展示您首先嚐試的努力。 – 2013-03-20 11:42:18

+0

你說它可能是相關的,但你沒有說如何。那麼讓我問一下 - 它究竟有多相關?爲什麼你會認爲答案取決於我先做了什麼努力? – chefsmart 2013-03-22 09:58:52

回答

6

使用filter()與默認標識功能(None):

newlist = filter(None, origlist) 

另外,列表理解:

newlist = [el for el in origlist if el] 
+0

謝謝,但你會選擇哪一個? – chefsmart 2013-03-20 11:05:56

+0

@chefsmart:Python 2:'filter()'。 Python 3:'filter()'或列表理解,取決於迭代器會做什麼或者如果我有*有列表。 – 2013-03-20 11:07:21

+0

@chefsmart我認爲這是一個有爭議的決定,儘管大多數人會爲第二個人擔保,因爲他們認爲「過濾器」不太清楚。我喜歡第一個。它也可以寫成'filter(bool,origlist)' – jamylak 2013-03-20 11:08:24