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
相关产品推荐
相关产品推荐

