我收到了这行代码,我在语法上难以理解。
def coinsNeeded(coins, price, mincoinList):
return min([mincoinList[price-coin] for coin in coins if coin <= price]) + 1
到目前为止我所知道的是coins
和mincoinList
都是整数数组,price
也是整数。
根据我的理解,min()
函数需要一个可迭代或两个参数,所以我不太清楚在min()
函数中要比较的值是什么。
答案 0 :(得分:2)
min([mincoinList[price-coin] for coin in coins if coin <= price]) + 1
让我们分析这一行!
这部分的核心部分是以下列表理解:
[mincoinList[price-coin] for coin in coins if coin <= price]
列表推导是一种通过循环某个序列来创建列表的方法。在这种情况下,我们正在为mincoinList[price - coin]
列表中的每个coin
创建一个包含值coins
的元素的列表,如果 coin
的值低于或等于price
。
换句话说,它选择那些低于价格的硬币,然后对于每一个,它从mincoinList
获得一个元素,其中价格和硬币的差异作为索引。
最后,该列表被传递给min()
,它只返回具有最低值的列表中的元素。然后将该值加1并从函数返回。
你可以用这样一个非常详细的多行代码写出这一切:
selectedCoins = []
for coin in coins:
if coin <= price:
selectedCoins.append(mincoinList[price - coin])
return min(selectedCoins) + 1
答案 1 :(得分:1)
您的代码:
def coinsNeeded(coins, price, mincoinList):
return min([mincoinList[price-coin] for coin in coins if coin <= price]) + 1
有一个列表理解,相当于:
def coinsNeeded(coins, price, mincoinList):
minCoinNeeded = []
for coin in coins:
if coin <= price:
minCoinNeeded += mincoinList[price-coin]
return min(minCoinNeeded) + 1