【发布时间】:2018-11-17 22:46:37
【问题描述】:
我想用多个元素替换列表中的一个元素。例如,我有列表 a = ['b', 'c'] 并想用 'd', 'e' 替换 'b',这将给我列表 a = ['d', 'e', 'c']。
我有以下代码:a = [??? if item == 'b' else item for item in a]。我该如何进行?例如,我希望保留列表理解,因为这似乎比 a.extend(('b', 'c')) 更合适。
【问题讨论】:
-
单独的列表推导是行不通的,它不能生成一个包含比输入更多的项目的列表。
-
很多人会说创建嵌套列表并将它们展平,但我实际上认为带有 list.extend 的常规 for 循环可以更多惯用
-
这里最惯用的可能是运行速度最快的。在列表理解中创建列表只是为了能够提供 1 个或多个元素肯定会浪费 CPU 时间
-
@Jean-FrançoisFabre 这可能值得一个单独的问答和一个不错的基准,或者问题可能已经存在?这不太成功stackoverflow.com/questions/3899645/…
-
如果这样做我不会感到惊讶。
标签: python python-3.x