gpt4 book ai didi

python - 在列表中查找与另一个列表中的元素近似相等的元素的索引

转载 作者:行者123 更新时间:2023-12-05 05:40:33 25 4
gpt4 key购买 nike

我有 2 个带有 float 的列表:

list_1 = [1.03, 3.56, 4.91, 2.85, 5.55, 1.12, 1.73, 1.33, 2.56, 2.58, 3.53]
list_2 = [1.05, 1.55, 2.05, 2.55, 3, 3.55, 4]

目标是比较 2 个列表并返回第一个列表 (list_1) 中元素的索引(如果它们基于特定阈值近似相等)。

def compare_lists(list1, list2, threshold=0.02):
output_list = []
for i in range(len(list1)):
for j in range(len(list2)):
print(abs(list1[i] - list2[j]))
if abs(list1[i] - list2[j]) <= threshold:
output_list.append(i)
return output_list

这只是return [1, 8] 我认为是错误的。输出列表中应该包含一些索引,例如 0 和最后一个。

我认为问题是 float 的减法。我检查了 1.03 和 1.05 之间的差异,它返回 0.02000000000000018

我该如何解决这个问题?或者我可以将它们四舍五入,但这不是一个好的选择,因为列表可以包含不同的小数点。它不仅仅涵盖 2 分以及阈值。

最佳答案

由于舍入误差,您可能需要更多填充:

list_1 = [1.03, 3.56, 4.91, 2.85, 5.55, 1.12, 1.73, 1.33, 2.56, 2.58, 3.53]
list_2 = [1.05, 1.55, 2.05, 2.55, 3, 3.55, 4]

output = [i for i, x in enumerate(list_1) for y in list_2 if abs(x - y) <= 0.02 + 1e-8]
print(output) # [0, 1, 8, 10]

关于python - 在列表中查找与另一个列表中的元素近似相等的元素的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72386631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com