作者kilva (嗡嗡)
看板Python
标题Re: [问题] 排列组合问题或逻辑
时间Tue Oct 17 19:55:24 2017
※ 引述《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://webptt.com/cn.aspx?n=bbs/Python/M.1508241327.A.B29.html
※ 编辑: kilva (61.228.224.120), 10/17/2017 20:07:56