Python:内联if打印非空字符串?
我想从一个列表中只打印出那些不为空的字符串。但是我好像做错了什么,下面的代码没有效果,问题出在哪里呢?
print item in mylist if item is not ""
3 个回答
1
filter()
这个内置函数非常适合用来做这个,只需要把None
传进去,代替一个函数就可以了:
>>> filter(None, ['Abc', '', 'def', None, 'ghi', False, 'jkl'])
['Abc', 'def', 'ghi', 'jkl']
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']