[英]Need help understanding a Python snippet.
我最近遇到了這個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位數字。謝謝,提前
for循環稱為生成器表達式,類似於列表推導。 您可以將其視為生成一個數字列表,方法是取所有數字在1和9之間,包括條件num/i*i==num
為真,然后使用表達式dec(num/i, num_dig-1)
轉換這些數字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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.