作为问题答案给出的推荐表达式是: How to find the smallest closest number in a list in python是我正在搜索的内容。 但是,当我试图运行它发生了一些事情,我并不期待。使用min(list_1,key = func)的python表达式返回列表中的最大数字小于给定数字
我使用的列表和从上面的问题的数量,即:
list_of_numbers = [4, 9, 15, 25]
number = 20
和表达:
min(list_of_numbers, key=lambda x: (abs(x - number), x))
如所预期的,我数字15.
然而,当我换了号码:
number = 91
list_new = [] for i in range(4,98,4): list_new.append(i)
min(list_of_numbers, key=lambda x: (abs(x - number), x))
list_new是:
[4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96]
所以我预计88一个答案,因为这发生了什么事对应当我尝试原始问题时,我仍然得到92.
如果我从一开始就看错了问题和答案,我将很感激我的问题寻求的答案。
我在Python 3.6上运行这个。
91比88更接近92.它找到算术上最接近的数字,所以我不确定如何将您的初始结果解释为对应于第二个。在两种情况下都发生同样的事情如果有多个同样接近的表达式,表达式会返回列表中的第一个数字。但是,这不是在你的第二个例子中发生的事情。 – pvg
如果是这种情况,我可能会看到错误的答案。你有没有建议如何检索一个小于给定数字的列表中的最大数字?这是我最初寻找答案的问题,最好使用min()。 – YaoS