在列表中替换无值?

use*_*172 24 python replace list

我有:

d = [1,'q','3', None, 'temp']
Run Code Online (Sandbox Code Playgroud)

我想将None值替换为'None'或任何字符串

预期效果:

d = [1,'q','3', 'None', 'temp']
Run Code Online (Sandbox Code Playgroud)

尝试替换字符串和for循环但我得到错误:

TypeError: expected a character buffer object
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 54

使用简单的列表理解:

['None' if v is None else v for v in d]
Run Code Online (Sandbox Code Playgroud)

演示:

>>> d = [1,'q','3', None, 'temp']
>>> ['None' if v is None else v for v in d]
[1, 'q', '3', 'None', 'temp']
Run Code Online (Sandbox Code Playgroud)

注意is None测试以匹配None单例.


Sau*_*tro 8

您可以使用以下函数简单地使用所有项目map并将其转换为字符串:str

map(str, d)
#['1', 'q', '3', 'None', 'temp']
Run Code Online (Sandbox Code Playgroud)

如果您只想转换None值,可以执行以下操作:

[str(di) if di is None else di for di in d]
Run Code Online (Sandbox Code Playgroud)