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

Python中按n+3规则从列表提取元素生成新列表的实现方法

解决方案

首先看你的原列表和目标列表,你提到的“每隔三个位置”可能是描述偏差——因为目标列表里的元素在原列表中的索引并不是固定间隔3的。实际需求应该是提取原列表中1到9每个数字的首次出现,按顺序组成新列表。

以下是两种实现方式:

方式一:自动提取目标数字的首次出现(通用型)

这种方法不需要手动指定索引,会自动遍历原列表,把1-9每个数字第一次出现的元素收集起来,直到集齐所有目标数字:

original_list = [1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 1, 6, 1, 4, 7, 2, 4, 8, 4, 6, 9, 6, 5]
target_nums = {1, 2, 3, 4, 5, 6, 7, 8, 9}
new_list = []
seen = set()

for num in original_list:
    if num in target_nums and num not in seen:
        new_list.append(num)
        seen.add(num)
        # 集齐后提前结束遍历,提升效率
        if len(new_list) == len(target_nums):
            break

print(new_list)  # 输出: [1, 2, 3, 4, 5, 6, 7, 8, 9]

方式二:手动指定索引提取(针对当前固定列表)

如果你确定元素的位置不会变化,也可以直接手动写出目标元素的索引,通过列表推导式提取:

original_list = [1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 1, 6, 1, 4, 7, 2, 4, 8, 4, 6, 9, 6, 5]
target_indices = [0, 2, 5, 8, 11, 15, 18, 21, 24]
new_list = [original_list[i] for i in target_indices]

print(new_list)  # 输出: [1, 2, 3, 4, 5, 6, 7, 8, 9]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 10:05:26