使用列表推导替换列表列表中的无值

时间:2015-01-12 14:58:03

标签: python python-2.7 list-comprehension

我想用list comprehension替换列表列表中的所有None值。我的代码似乎只是返回列表的原始列表。

Names = [['Jon',None,'Bill'],['Andrew','Robert',None]]
Removed_None = [0 if x is None else x for x in Names]
print Removed_None

期望的输出:

[['Jon',0,'Bill'],['Andrew','Robert',0]]

3 个答案:

答案 0 :(得分:4)

你需要嵌套你的列表理解:

[[v if v is not None else 0 for v in nested] for nested in Names]

演示:

>>> Names = [['Jon',None,'Bill'],['Andrew','Robert',None]]
>>> [[v if v is not None else 0 for v in nested] for nested in Names]
[['Jon', 0, 'Bill'], ['Andrew', 'Robert', 0]]

答案 1 :(得分:2)

Removed_None = [[0 if item is None else item for item in each_list] for each_list in Names]

答案 2 :(得分:0)

你需要使用嵌套的理解(我为了清晰起见,我写了一个作为函数)

[['Jon', None, 'Bill'], ['Andrew', 'Robert', None]]
>>> def replace(names):
...     return [0 if name is None else name for name in names]
... 
>>> print [replace(names) for names in Names]
[['Jon', 0, 'Bill'], ['Andrew', 'Robert', 0]]