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

2 投票
3 回答
2366 浏览
提问于 2025-04-17 04:34

我想从一个列表中只打印出那些不为空的字符串。但是我好像做错了什么,下面的代码没有效果,问题出在哪里呢?

print item in mylist if item is not ""

3 个回答

1

filter()这个内置函数非常适合用来做这个,只需要把None传进去,代替一个函数就可以了:

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

详细信息可以查看 http://docs.python.org/library/functions.html

2

你可以创建一个生成器,用来获取列表中那些不为空的项目。

nonempties = (item for item in mylist if item)

然后可以循环这些项目,把它们打印出来或者合并成一个字符串。

print ' '.join(nonempties)
7

下面的写法是错误的:print item in mylist if item is not ""

你可以试试用列表推导式来实现你想要的效果:

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

撰写回答