从整数列表中,获取最接近并小于给定值的数字

时间:2019-03-30 04:14:48

标签: python list

我正在编写一个代码,其中我必须从列表中选择一个整数,该整数不仅最接近给定值,而且同时小于给定值。如何修改代码以同时满足这两个条件?

我试图使用内置的min()函数,该函数在此站点上找到。它使我得到最接近给定值的整数,而不管该整数大于或小于给定值。

def price(my_list,real_price):
   closest_number=min(my_list, key=lambda x:abs(x-real_price))
   return closest_number

my_list=[101,90,70]
real_price=100
closest_number=price(my_list,real_price)
print(closest_number)

对于上面的代码,我希望输出为90,但我得到101

3 个答案:

答案 0 :(得分:2)

您应该获得小于min的数字中的max,而不是real_price

def price(my_list,real_price):
    return max(price for price in my_list if price <= real_price)

进行此更改后,您的代码将输出:90

答案 1 :(得分:0)

您所拥有的将近;您只需要接受小于real_price的数字:

def price(my_list, real_price):
   closest_number = min((number for number in my_list if number < real_price), key=lambda x: abs(x - real_price))
   return closest_number

my_list = [101,90,70]
real_price = 100
closest_number = price(my_list, real_price)
print(closest_number)

输出:

90

答案 2 :(得分:0)

使用List comprehensionmax可以得到90。

def price(my_list,real_price):
   return max([x for x in my_list if ( x <= real_price )])

my_list=[101,90,70]
real_price=100
closest_number=price(my_list,real_price)
print(closest_number)