排列组合
使用 itertools.combinations()
可得到输入集合中元素的所有的组合。
对于 combinations()
来讲,元素的顺序已经不重要了。 也就是说,组合 (‘a’, ‘b’) 跟 (‘b’, ‘a’) 其实是一样的(最终只会输出其中一个)。
combinations()
是根据下标来排列组合的, 对于通过一个值但是下标不同,是不会去重的 比如 (‘a’, ‘a’, ‘b’),尽管值相同但是还是会输出 (‘a’, ‘a’)
例:
当 n = 1 的时候 有1种组合 [1]
当 n = 2 的时候 有3种组合 [1] [2] [1, 2]
当 n = 3 的时候 有7种组合 [1] [2] [3] [1, 2] [1, 3] [1, 2, 3] [2, 3]
代码
from itertools import combinations
a = 0
n = 3
alist = []
for item in range(1, n+1):
res = list(combinations(range(1, n+1), item))
a += len(res)
alist.extend(res)
print(a)
print(alist)