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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:42:01