首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对于列表中的每个元素x,检查其他元素是否在范围内(x-2,x+2)

对于列表中的每个元素x,检查其他元素是否在范围内(x-2,x+2)
EN

Stack Overflow用户
提问于 2021-03-19 19:57:50
回答 2查看 36关注 0票数 0

对于python列表中的每个元素,我希望检查其他元素是否在与该元素对应的给定范围内,然后返回这些元素及其索引。

例如:

代码语言:javascript
运行
复制
list = [9, 10, 15, 20, 21, 22]
range = (x-2 to x+2)

结果:

代码语言:javascript
运行
复制
9  - range: 7-11, element:10, index:1
10 - range: 8-12, element:9, index:0
15 - range: 13-17, element:, index:
20 - range: 18-22, element:21,22, index:4,5
21 - range: 19-23, element:20,22, index:3,5
22 - range: 20-24, element:20,21, index:3,4
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-19 20:06:57

您可以使用嵌套列表理解,使用enumerate获取每个元素的索引,并将所有其他值与当前值+/-2进行比较

代码语言:javascript
运行
复制
l = [9, 10, 15, 20, 21, 22]

result = [[(v, i) for i, v in enumerate(l) if abs(v-x) < 3 and i != j] for j, x in enumerate(l)]

输出:

代码语言:javascript
运行
复制
[
 [(10, 1)],
 [(9, 0)],
 [],
 [(21, 4), (22, 5)],
 [(20, 3), (22, 5)],
 [(20, 3), (21, 4)]
]
票数 2
EN

Stack Overflow用户

发布于 2021-03-19 20:03:32

由于您的列表已排序,因此可以使其更有效率,但您可以将此作为起点。

代码语言:javascript
运行
复制
list = [9, 10, 15, 20, 21, 22]

for a in list:
    in_range = []
    indices = []
    for i, b in enumerate(list):
        if b == a:
            continue

        if a - 2 <= b <= a + 2:
            in_range.append(b)
            indices.append(i)

    print(f'{a} - range: {a - 2}-{a + 2}, element:{in_range}, index:{indices}')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66707762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档