You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以更Pythonic的方式将列表指定索引位置的元素翻倍?

更Pythonic的列表元素翻倍实现方法

给定原始列表:

L = [10, 20, 30, 40, 50, 60, 70, 80, 90]

以及需要翻倍元素的索引列表:

dbl_indices = [0, 2, 5]

要得到结果:[20, 20, 60, 40, 50, 120, 70, 80, 90],除了遍历索引列表的for循环,推荐两种更符合Python风格的写法:

方法一:结合enumerate的列表推导式

先把索引列表转成集合(能大幅提升in操作的效率,尤其当索引数量较多时),再用列表推导式遍历原列表的索引与元素,判断当前索引是否在目标集合中,是则翻倍元素,否则保留原元素:

dbl_set = set(dbl_indices)
result = [num * 2 if idx in dbl_set else num for idx, num in enumerate(L)]

方法二:使用map配合匿名函数(函数式编程风格)

同样先将索引列表转为集合,再用map对每个带索引的元素进行处理,最后转成列表:

dbl_set = set(dbl_indices)
result = list(map(lambda x: x[1] * 2 if x[0] in dbl_set else x[1], enumerate(L)))

两种写法都保持了Python的简洁性,其中列表推导式可读性更强,是日常开发的首选;map的写法偏向函数式编程,适合特定场景需求。

内容的提问来源于stack exchange,提问作者alekscooper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 13:52:35