[問題] 排列組合問題或邏輯

作者: aegisqoo (小猴)   2017-10-15 00:23:33
大家好,我新手也有爬文,有個問題
假設 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的原始代碼邏輯嗎?
謝謝大大
作者: ckc1ark (偽物)   2017-10-15 01:19:00
你說的應該是itertools.product才對如果都是0~9 可以用0 ~ 10**N 的每個digit來產生
作者: flarehunter (Range)   2017-10-15 14:06:00
可以用DFS遞迴實作
作者: uranusjr (←這人是超級笨蛋)   2017-10-15 19:19:00
空兩格四格八格我都看過, 縮排 16 格到底是怎麼回事
作者: f496328mm (為什麼會流淚)   2017-10-15 22:34:00
樓上 XD
作者: goldflower (金色小黃花)   2017-10-16 21:11:00
如果只是想用python的寫法來簡化的話那可以用list comprehension + exec來解決https://i.imgur.com/6re6PHU.png 大概這樣 有點蠢XD第二行要改一下 沒寫好哈哈

Links booklink

Contact Us: admin [ a t ] ucptt.com