如何解决优化功能
我提出了一个问题:
我正在编写一个接受两个参数的函数:rug_length
和prices
,rug_length
是一个整数,表示要购买多少米的地毯,prices
是一本字典,它保存地毯不同长度的价格,其中键是长度,值是价格。
函数调用的示例:
rug_length = 10
prices = {1:2,2:3,3:1,4:5,5:4}
fn(rug_length,prices)
该函数需要返回选定长度的地毯的最小成本,因此例如:
fn(1,prices) # returns 2
fn(3,prices) # returns 1
fn(5,prices) # returns 4
fn(6,prices) # returns 2 ( 1 + 1 )
fn(8,prices) # returns 5 ( 1 + 1 + 2 )
fn(9,prices) # returns 3 ( 3 + 3 + 3 )
我想我要按一米的价格对字典进行排序。
我写了两个函数:
def fn(rug_length,prices):
if rug_length == 0:
return 0
cost = 0
while rug_length > 0:
for key,v in sorted(prices.items(),key=(lambda item : (item[1]/item[0]))):
while rug_length >= key:
rug_length -= key
cost += prices[key]
return cost
%%timeit -n 250
fn(245245,price)
# 4.54 ms ± 25 µs per loop (mean ± std. dev. of 7 runs,250 loops each)
第二个:
def fn_2(rug_length,prices):
if rug_length == 0:
return 0
cost = 0
prices = sorted(prices.items(),key=(lambda item : (item[1]/item[0])))
while rug_length > 0:
for key,v in prices:
cost += (rug_length//key)*v
rug_length%=key
return cost
%%timeit -n 250
fn_2(245245,price)
# 1.76 µs ± 54 ns per loop (mean ± std. dev. of 7 runs,250 loops each)
有改进的地方吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。