lif*_*nce 10 python replace list in-place
假设我有一个清单:
myl = [1, 2, 3, 4, 5, 4, 4, 4, 6]
Run Code Online (Sandbox Code Playgroud)
什么是最有效的,最简单的Python的方式就地(双加权)替换所有出现的4用44?
我也很好奇为什么没有standard办法做到这一点(特别是,当strings有一个非就地 replace方法)?
use*_*ica 22
myl[:] = [x if x != 4 else 44 for x in myl]
Run Code Online (Sandbox Code Playgroud)
使用列表推导执行非就地替换,然后如果您真的想要更改原始列表,则将新值切片分配到原始列表中.
the*_*eye 11
我们可以迭代列表,enumerate并用新值替换旧值,就像这样
myl = [1, 2, 3, 4, 5, 4, 4, 4, 6]
for idx, item in enumerate(myl):
if item == 4:
myl[idx] = 44
print myl
# [1, 2, 3, 44, 5, 44, 44, 44, 6]
Run Code Online (Sandbox Code Playgroud)