用for循环迭代返回数组的最小值

2024-10-02 12:32:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我收到了这行代码,我在理解语法上有困难

def coinsNeeded(coins, price, mincoinList):
     return min([mincoinList[price-coin] for coin in coins if coin <= price]) + 1

到目前为止我知道的是coinsmincoinList都是整数数组,而且price也是整数

根据我的理解,min()函数需要一个iterable或两个参数,所以我不太明白在min()函数中比较的是什么值


Tags: 函数代码inforreturnifdef语法
2条回答
min([mincoinList[price-coin] for coin in coins if coin <= price]) + 1

让我们切断这条线

其中的核心部分是以下列表:

[mincoinList[price-coin] for coin in coins if coin <= price]

列表理解是一种通过循环某个序列来创建列表的方法。在本例中,我们为coins列表中的每个coin创建一个值为mincoinList[price - coin]的元素的列表,如果coin的值小于或等于price

换言之,它选择那些比价格低的硬币,然后对于每一个,它从mincoinList中得到一个元素,以价格和硬币的差值作为索引

最后,该列表被传递给^{},后者只返回列表中值最低的元素。然后将该值递增1,并从函数返回


您可以用一个非常详细的多行代码来编写这一切,如下所示:

selectedCoins = []
for coin in coins:
    if coin <= price:
        selectedCoins.append(mincoinList[price - coin])

return min(selectedCoins) + 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

相关问题 更多 >

    热门问题