列表理解的解释

2024-09-29 06:31:59 发布

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

我正在尝试学习Python3.x的动态编程和递归。下面的代码是我课本上的一个简单示例:

def recMC(coinValueList, change):
    minCoins = change
    if change in coinValueList:
        return 1
    else:
        for i in [c for c in coinValueList if c <= change]:
            numCoins = 1 + recMC(coinValueList, change-i)
            if numCoins < minCoins:
                minCoins = numCoins
        return minCoins

print(recMC([1,5,10,25], 63))

我真的很难理解第6行,理解。我完全不确定这里发生了什么,以及如何将其分解成循环以更容易理解。我的想法是:

^{pr2}$

但我不明白这是怎么重复的。也许知识更丰富的人可以用不同的方式来解释这一点,而不是我的书和教授?在


Tags: 代码in示例forreturnif编程动态
2条回答
for i in [c for c in coinValueList if c <= change]:

同:

^{pr2}$

列表理解更容易编写代码,更易于阅读。
列表理解是“python方式”。在

让我解释一下

[c for c in coinValueList if c <= change]

使用coinValueList中小于change的值创建新列表 在此之后,您将迭代新列表。在

注意:如果您坚持使用理解,那么考虑生成器语句,它将以相同的方式工作,但不会消耗内存。在

所以循环的结果不应该是

^{pr2}$

但是

^{3}$

相关问题 更多 >