gpt4 book ai didi

python - 比较两个不同的列表

转载 作者:行者123 更新时间:2023-11-28 21:19:46 27 4
gpt4 key购买 nike

我有两个不同长度的列表。示例---

E1 = [1.0,1.3,1.69,2.1970,2.8561,.....] 

E2 = [1.00,1.04,1.08,1.1249,1.1699,.....]

(当然 E2 的元素数量比 E1 多)。现在我想将 E1 列表与 E2 进行比较,并找到最接近 E1 中每个元素的值,如本例中 E1 中的 1.3 最接近 E2 中的 1.1699。同样,我想对 E1 中的所有其他元素执行此操作...因此,如果我从 E2 中形成一个新列表 E3,它将包含与 E1 完全相似的元素数量和最接近 E1 元素的值。我怎样才能做到这一点 ?任何帮助表示赞赏..

最佳答案

快速和肮脏的版本:

E3 = [min(E2, key=lambda x: abs(x-i)) for i in E1]

对于 E1 中的每个元素,它根据与 E1 元素的绝对距离找到 E2 中的最小元素。

请注意,此列表将包含重复项。例如。对于您的示例,它返回:

[1.0, 1.1699, 1.1699, 1.1699, 1.1699]

因为 1.1699 最接近 E1 中所有较大的值。


线性时间,但更复杂的排序列表解决方案:

E3 = []
p2 = 0
for e1 in E1:
while p2 < len(E2) - 1 and abs(E2[p2] - e1) > abs(E2[p2+1] - e1):
p2 += 1
E3.append(E2[p2])

关于python - 比较两个不同的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24133934/

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