Python:内联是否打印非空字符串?

时间:2011-10-18 21:01:19

标签: python if-statement

我正在尝试打印列表中的非空字符串。我似乎无法让下面的工作,我做错了什么?

print item in mylist if item is not ""

3 个答案:

答案 0 :(得分:7)

以下语法无效:print item in mylist if item is not ""

您可以使用列表理解来实现您想要的目标:

>>> mylist = ["foo","bar","","baz"]
>>> print [item for item in mylist if item]
['foo', 'bar', 'baz']

答案 1 :(得分:2)

您可以创建一个生成器来抓取列表中非空的项目。

nonempties = (item for item in mylist if item)

然后循环并打印或将它们连接成一个字符串。

print ' '.join(nonempties)

答案 2 :(得分:1)

filter()内置非常适合,只需传递None而不是函数:

>>> filter(None, ['Abc', '', 'def', None, 'ghi', False, 'jkl'])
['Abc', 'def', 'ghi', 'jkl']

http://docs.python.org/library/functions.html

的详细信息