鉴于我有两个不同的int列表.
a = [1,4,11,20,25]和b = [3,10,20]
我想返回一个长度为len(b)的列表,它将最接近的数字存储在b中的每个int中.
所以,这应该返回[4,11,20].
我可以用蛮力做到这一点,但有什么更有效的方法呢?
编辑:如果我可以使用标准库,如果需要,那将是很好的.
最佳答案
>>> a = [1, 4, 11, 20, 25]
>>> b = [3, 10, 20]
>>>
>>> ans = list(map(lambda y:min(a, key=lambda x:abs(x-y)),b))
>>> ans
[4, 11, 20]
这是一个问题’获得最接近值的问题’的循环
value = #number
min(a, key=lambda x:abs(x-value))