我如何以两个或更多的方式替换列表中的一个项目?我正在使用拆分和索引来做它,它看起来非常非python.
我希望这样的东西存在:
values = [ "a", "b", "old", "c" ]
[ yield ["new1", "new2"] if item == "old" else item for item in values ]
// return [ "a", "b", "new1", "new2", "c" ]
Run Code Online (Sandbox Code Playgroud)
Gar*_*tty 12
最好的方法是使用itertools.chain.from_iterable:
itertools.chain.from_iterable(
("new1", "new2") if item == "old" else (item, ) for item in values)
Run Code Online (Sandbox Code Playgroud)
您面临的"每个项目的多个项目"问题可通过创建嵌套列表,然后将其展开来解决.通过制作所有项目元组(单项元组,我们只想要一个),我们可以实现这一点.
当然,如果你需要一个列表,而不是一个迭代器,请通过调用来包装整个事物list().