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

如何对列表元素分组并筛选满足±10差值条件的元素?

问题与解决方案

问题背景

给定原始列表:

my_list = [18, 19, 20, 27, 28, 29, 38, 39, 40]

需先拆分为3个长度为3的子列表:

list1 = [18, 19, 20]
list2 = [27, 28, 29]
list3 = [38, 39, 40]

然后保留满足以下跨组±10条件的元素:

  • list1的元素x:存在list2或list3中的元素y,使得x = y-10或x = y+10
  • list2的元素x:存在list1或list3中的元素y,使得x = y-10或x = y+10
  • list3的元素x:存在list1或list2中的元素y,使得x = y-10或x = y+10

最终期望结果:

final = [18,19,28,29,38,39]

失败的尝试代码

尝试N1

for lst in my_list:
    ind = my_list.index(lst)
    if int(my_list[ind]) == any(int(x)-10 for x in my_list) or int(my_list[ind]) == any(int(x)+10 for x in my_list):
        print(ind)

尝试N2

for id in my_list:
    ind = my_list.index(id)
    try:
        if id == (my_list[ind+1])-1 and id :
            print(id)
    except IndexError:
            print("out of", id)

正确实现方案

步骤1:拆分原始列表为指定分组

my_list = [18, 19, 20, 27, 28, 29, 38, 39, 40]
# 按每3个元素拆分分组
list1, list2, list3 = [my_list[i:i+3] for i in range(0, len(my_list), 3)]

步骤2:预生成跨组±10的集合(提升判断效率)

# 生成各列表元素±10的集合,用于快速成员判断
list1_plus10 = {num + 10 for num in list1}
list1_minus10 = {num - 10 for num in list1}
list2_plus10 = {num + 10 for num in list2}
list2_minus10 = {num - 10 for num in list2}
list3_plus10 = {num + 10 for num in list3}
list3_minus10 = {num - 10 for num in list3}

步骤3:筛选符合条件的元素并合并

# 筛选list1中符合条件的元素
filtered_list1 = [x for x in list1 if x in list2_minus10 or x in list3_minus10 or x in list2_plus10 or x in list3_plus10]
# 筛选list2中符合条件的元素
filtered_list2 = [x for x in list2 if x in list1_minus10 or x in list3_minus10 or x in list1_plus10 or x in list3_plus10]
# 筛选list3中符合条件的元素
filtered_list3 = [x for x in list3 if x in list1_minus10 or x in list2_minus10 or x in list1_plus10 or x in list2_plus10]

# 合并得到最终结果
final = filtered_list1 + filtered_list2 + filtered_list3
print(final)  # 输出: [18, 19, 28, 29, 38, 39]

失败代码问题分析

  • 尝试N1:错误地将整数和any()返回的布尔值做相等判断,any()只会返回True/False,无法和元素值匹配。正确逻辑是判断元素是否存在于目标±10的集合中。
  • 尝试N2:逻辑完全偏离需求,仅检查当前元素与下一个元素的连续关系,和跨组±10的判断无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:01:19