Python中实现列表指定索引元素复制的更Pythonic方法
解决方案:Pythonic的列表指定索引元素复制
可以利用列表推导式结合集合快速查找,实现简洁高效的需求,代码如下:
def duplicate_elements(original_list, target_indices): # 把目标索引转为集合,提升查找效率 target_set = set(target_indices) # 列表推导式:遍历原列表,目标索引的元素添加两次,其余添加一次 return [value for idx, value in enumerate(original_list) for _ in range(2 if idx in target_set else 1)]
验证示例
用你提供的测试数据验证:
old_list = [1,2,3,4,5,6,7,8,9,10] target_indices = [4,5] new_list = duplicate_elements(old_list, target_indices) print(new_list)
输出:
[1, 2, 3, 4, 5, 5, 6, 6, 7, 8, 9, 10]
优势说明
- 简洁性:用列表推导式替代显式的for循环+条件判断,符合Python"简洁优雅"的风格
- 高效性:将目标索引转为集合,
idx in target_set的时间复杂度为O(1),比原代码的多个or判断更高效,尤其当目标索引数量较多时 - 灵活性:支持任意长度的列表,以及任意数量的目标索引(包括空索引集合,此时直接返回原列表)
场景适配
你的场景中固定48个元素的列表完全适用,只需传入对应列表和目标索引即可,示例:
# 48元素列表示例 long_list = list(range(1, 49)) # 指定多个索引 targets = [10, 20, 30] result = duplicate_elements(long_list, targets)
内容的提问来源于stack exchange,提问作者Harry L
相关产品推荐
相关产品推荐

