给定一个整数列表,我想找出哪个数字最接近我在输入中给出的数字:
>>> myList = [4, 1, 88, 44, 3]
>>> myNumber = 5
>>> takeClosest(myList, myNumber)
...
4有什么快速的方法可以做到这一点吗?
发布于 2012-08-27 19:37:36
>>> takeClosest = lambda num,collection:min(collection,key=lambda x:abs(x-num))
>>> takeClosest(5,[4,1,88,44,3])
4lambda是编写“匿名”函数(没有名称的函数)的一种特殊方式。您可以为它指定任何想要的名称,因为lambda是一个表达式。
以上内容的“长”写法是:
def takeClosest(num,collection):
return min(collection,key=lambda x:abs(x-num))发布于 2012-08-27 19:36:16
遍历列表并将当前最接近的数字与abs(currentNumber - myNumber)进行比较
def takeClosest(myList, myNumber):
closest = myList[0]
for i in range(1, len(myList)):
if abs(i - myNumber) < closest:
closest = i
return closest发布于 2013-12-16 22:36:06
def closest(list, Number):
aux = []
for valor in list:
aux.append(abs(Number-valor))
return aux.index(min(aux))此代码将为您提供列表中最接近的数字的索引。
总体来说,KennyTM提供的解决方案是最好的,但在您不能使用它的情况下(如brython),此函数可以完成工作
https://stackoverflow.com/questions/12141150
复制相似问题