需要帮助理解Python片段。

时间:2014-03-01 09:04:30

标签: python

我最近遇到过这个python片段,有人可以告诉我return语句中的for循环是做什么的吗?

def dec(num, num_dig):
    if num_dig==0:
        return int(num==1)
    else:
        return sum(dec(num/i, num_dig-1) for i in range(1,10) if num/i*i==num)

显然,问题是关于找不到。产品等于N的x位数字。 提前谢谢

1 个答案:

答案 0 :(得分:2)

for循环称为生成器表达式,类似于列表推导。 您可以将其视为生成数字列表,方法是将所有数字设置为1到9(包括1和9),仅采用条件num/i*i==num为真的数字,然后使用表达式dec(num/i, num_dig-1)转换这些数字。

然后取所有这些最终数字的总和。

另一种写这种方式的方法,更简洁,更少Pythonic但如果你来自系统语言可能会更清楚:

total = 0
for i in range(1,10):
   if num/i*i == num:
     total += dec(num/i, num_dig-1)
return total