2013-03-20 68 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