看板 Python 關於我們 聯絡資訊
※ 引述《aegisqoo (flymetomoon)》之銘言: : 大家好,我新手也有爬文,有個問題 : 假設 a=[x,y,z] 且 0 <= x,y,z <= 9 的 x.y.z組合 : 如下: : for x in range(10): : for y in range(10): : for z in range(10): : a=[x,y,z] : print(a) : 那問題是,有辦法更簡短嗎?,假設今天a=[b,c,d,e,...z] : 整個for迴圈就打很長,在網路上有看到指令 : itertools中permutations可以直接排列,但想知道假設不用 : 這個指令,且只能用一般循環指令來寫,有辦法更簡單嗎? : 或者是有人可以解釋itertools.permutations的原始代碼邏輯嗎? : 謝謝大大 X = [10, 10, 10, 10] # X = [3,8,2,3,4,9,10,3] 也可以執行 a = [] for x in X: a.append(0) while a[0] < X[0]: print(a) a[-1] = a[-1] + 1 for n in range(-1, -len(X), -1): a[n-1] = a[n-1]+a[n]//X[n] a[n] = a[n]%X[n] 模擬加1後的進位,效率不怎麼高就是了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.228.224.120 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1508241327.A.B29.html ※ 編輯: kilva (61.228.224.120), 10/17/2017 20:07:56