簡體   English   中英

如何找到列表中接近給定數字 Python 的*最小*數字?

[英]How to find the *smallest* number in the list that is close to a given number in Python?

我想知道是否有辦法找到列表中最接近給定數字的最小數字。

敵人

my_list=[1,10,15,20,45,56]
my_no=9

Output 應該等於 1 解釋:因為 9 介於 1 和 10 之間,我想要較小的數字,即 1。

同樣如果my_no=3,output等於1

我是 python 的新手,非常感謝您的幫助。 謝謝!

列表理解是另一種優雅的方式來做到這一點。

my_list=[1,10,15,20,45,56]
my_no = 9 
output = max([x for x in my_list if x<=my_no])
print(output) #1 

您可以從functools reduce

from functools import reduce

i = reduce(lambda l, r: l if l <= my_no <= r else r, my_list)
print(i)

# Output
1

測試

# my_no = 18
>>> reduce(lambda l, r: l if l <= my_no <= r else r, my_list)
15

# my_no = 59
>>> reduce(lambda l, r: l if l <= my_no <= r else r, my_list)
56

注意:如果my_no < my_list[0]則此代碼不起作用。 你必須先檢查一下。

如果你想堅持基礎並想使用for loopif statement來處理它,那么它可以按如下方式實現:

my_list=[1,10,15,20,45,56]
given_number = 9

output=my_list[0]
for x in my_list:
  if(x < given_number and x > output):
    output= x

print(output)

# Output
1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM