繁体   English   中英

python排列有问题

[英]Having problems with python permutations

我在排列方面遇到问题! 对于python我是一个非常大的菜鸟,所以任何帮助将不胜感激!

可以说我在一个文本文件中有一个列表,范围从1-6,所以例如,它看起来像(1,2,3,4,5,6)我想打开所说的.txt文件并计算N的所有可能组合这6个数字中的最多N = 4。

当我使用itertools排列时

import itertools
x = [1, 2, 3, 4, 5, 6]
[p for p in itertools.product(x, repeat=2)]
[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (2, 1), (2, 
2), (2, 3), 
(2, 4), (2, 5), (2, 6), (3, 1), (3, 2), (3, 3), (3, 4), (3, 
5), (3, 6), 
(4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (4, 6), (5, 1), (5, 
2), (5, 3), 
 (5, 4), (5, 5), (5, 6), (6, 1), (6, 2), (6, 3), (6, 4), (6,5), 
(6, 6)]

它输出这样的数字,我不是真正想要的,因为我一次只能得到一个数字的所有组合-但是我希望所有N个数字的所有可能组合,N的范围是1-4,包括重复如:

(1,1), (1,1,1) (1,1,1,1), (1,1,1,1) 

因此,我希望它具有重复性,具有具有不同数量成员的组合,但是不要超过该数字的4种组合。 我真的很想这个概念! 如果有什么不合理的地方,不要犹豫,问我:)

from itertools import product

LIMIT = 4
l1 = [1,2,3]

results = []

for i in range(1, LIMIT+1):
    results.extend(product(l1, repeat=i))

print(results)

将产生:

[(1,), (2,), (3,), 
(1, 1), (1, 2), (1, 3), 
(2, 1), (2, 2), (2, 3), 
(3, 1), (3, 2), (3, 3), 
(1, 1, 1), (1, 1, 2), (1, 1, 3), 
(1, 2, 1), (1, 2, 2), (1, 2, 3), 
(1, 3, 1), (1, 3, 2), (1, 3, 3), 
(2, 1, 1), (2, 1, 2), (2, 1, 3), 
(2, 2, 1), (2, 2, 2), (2, 2, 3), 
(2, 3, 1), (2, 3, 2), (2, 3, 3), 
(3, 1, 1), (3, 1, 2), (3, 1, 3), 
(3, 2, 1), (3, 2, 2), (3, 2, 3), 
(3, 3, 1), (3, 3, 2), (3, 3, 3), 
(1, 1, 1, 1), (1, 1, 1, 2), (1, 1, 1, 3), 
(1, 1, 2, 1), (1, 1, 2, 2), (1, 1, 2, 3), 
(1, 1, 3, 1), (1, 1, 3, 2), (1, 1, 3, 3), 
(1, 2, 1, 1), (1, 2, 1, 2), (1, 2, 1, 3), 
(1, 2, 2, 1), (1, 2, 2, 2), (1, 2, 2, 3), 
(1, 2, 3, 1), (1, 2, 3, 2), (1, 2, 3, 3), 
(1, 3, 1, 1), (1, 3, 1, 2), (1, 3, 1, 3), 
(1, 3, 2, 1), (1, 3, 2, 2), (1, 3, 2, 3), 
(1, 3, 3, 1), (1, 3, 3, 2), (1, 3, 3, 3), 
(2, 1, 1, 1), (2, 1, 1, 2), (2, 1, 1, 3), 
(2, 1, 2, 1), (2, 1, 2, 2), (2, 1, 2, 3), 
(2, 1, 3, 1), (2, 1, 3, 2), (2, 1, 3, 3), 
(2, 2, 1, 1), (2, 2, 1, 2), (2, 2, 1, 3), 
(2, 2, 2, 1), (2, 2, 2, 2), (2, 2, 2, 3), 
(2, 2, 3, 1), (2, 2, 3, 2), (2, 2, 3, 3),
(2, 3, 1, 1), (2, 3, 1, 2), (2, 3, 1, 3), 
(2, 3, 2, 1), (2, 3, 2, 2), (2, 3, 2, 3), 
(2, 3, 3, 1), (2, 3, 3, 2), (2, 3, 3, 3), 
(3, 1, 1, 1), (3, 1, 1, 2), (3, 1, 1, 3), 
(3, 1, 2, 1), (3, 1, 2, 2), (3, 1, 2, 3), 
(3, 1, 3, 1), (3, 1, 3, 2), (3, 1, 3, 3), 
(3, 2, 1, 1), (3, 2, 1, 2), (3, 2, 1, 3), 
(3, 2, 2, 1), (3, 2, 2, 2), (3, 2, 2, 3), 
(3, 2, 3, 1), (3, 2, 3, 2), (3, 2, 3, 3), 
(3, 3, 1, 1), (3, 3, 1, 2), (3, 3, 1, 3), 
(3, 3, 2, 1), (3, 3, 2, 2), (3, 3, 2, 3), 
(3, 3, 3, 1), (3, 3, 3, 2), (3, 3, 3, 3)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM