我正在编写一个代码,其中我必须从列表中选择一个整数,该整数不仅最接近给定值,而且同时小于给定值。如何修改代码以同时满足这两个条件?
我试图使用内置的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
答案 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 comprehension
和max
可以得到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)