对于python列表中的每个元素,我希望检查其他元素是否在与该元素对应的给定范围内,然后返回这些元素及其索引。
例如:
list = [9, 10, 15, 20, 21, 22]
range = (x-2 to x+2)结果:
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发布于 2021-03-19 20:06:57
您可以使用嵌套列表理解,使用enumerate获取每个元素的索引,并将所有其他值与当前值+/-2进行比较
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)]输出:
[
[(10, 1)],
[(9, 0)],
[],
[(21, 4), (22, 5)],
[(20, 3), (22, 5)],
[(20, 3), (21, 4)]
]发布于 2021-03-19 20:03:32
由于您的列表已排序,因此可以使其更有效率,但您可以将此作为起点。
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}')https://stackoverflow.com/questions/66707762
复制相似问题