我正在尋找一種更短的(可能是遞回的)方法來寫下面的內容:
我正在尋找一種更短的(可能是遞回的)方法。
for x1 in range(10)。
for x2 in range(10 - x1)。
for x3 in range(10 - (x1 x2)) 。
for x4 in range(10 - (x1 x2 x3)) 。
print(x1,x2,x3,x4)
預先感謝。
uj5u.com熱心網友回復:
這里有一些提示來幫助你,然后如果你被卡住了,你可以提出更多的問題。要找到一個遞回的表述,首先要對你想實作的目標做一個高層次的描述,然后看看你是否能確定問題的遞回性質。要做到這一點,你可能需要對你的問題進行歸納。
因此,讓我以具體的形式為您提供您的問題的高層次描述:
"列印出所有的 4-year-day-day-day"。
"列印出所有非負數的4元組,使其總和為4。"
我把它概括為
"列印出所有n個非負數的元組,使它們的總和為k。"
現在試試你是否能將其概括為
現在試試你是否能以遞回方式解決這個任務。
uj5u.com熱心網友回復:
你想要的是一個過濾的產品。使用itertools就可以了,不需要遞回。
from itertools import product
n=10
for x1, x2, x3, x4 in filter(lambda x。sum(x) < n, product(range(n), repeat=4) )。)
print(x1, x2, x3, x4)
輸出:
0 0 0 0
0 0 0 1
0 0 0 2
0 0 0 3
0 0 0 4
0 0 0 5
0 0 0 6
0 0 0 7
0 0 0 8
0 0 0 9
0 0 1 0
...
9 0 0 0 ...
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/330527.html
標籤:
