Python中不使用循环实现列表指定位置元素重复的方法是什么?
函数修改方案
原代码问题
你现有的代码返回的是由原列表对象和pos二元组组成的元组,完全没有实现指定位置元素复制的逻辑,和需求不符。
正确实现代码
实现方式1:切片拼接
def dup_elt(lst, pos=0): # 判断pos是否超出合法索引范围 if pos >= len(lst): # 超出范围返回原列表新副本,避免修改原列表影响外部使用 return lst.copy() # 拼接生成新列表:前pos+1个元素 + 复制的pos位元素 + pos之后的所有元素 return lst[:pos+1] + [lst[pos]] + lst[pos+1:]
实现方式2:insert方法
def dup_elt(lst, pos=0): new_lst = lst.copy() if pos < len(new_lst): # 在pos元素的后一位插入相同元素,实现复制效果 new_lst.insert(pos + 1, new_lst[pos]) return new_lst
逻辑说明
列表的合法非负索引范围是0 ~ len(lst)-1,如果传入的pos大于等于列表长度,直接返回原列表的新副本即可。
元素复制逻辑符合示例要求:复制指定pos位置的元素,插入到该元素的后方,生成新的扩展列表。
测试验证
print(dup_elt([1, 2, 100, 8])) # 输出 [1, 1, 2, 100, 8] print(dup_elt([1, 2, 100, 8], 2)) # 输出 [1, 2, 100, 100, 8] print(dup_elt([1, 2, 100, 8], 10)) # 输出 [1, 2, 100, 8]
内容的提问来源于stack exchange,提问作者Diti
相关产品推荐
相关产品推荐

