如何在Python中创建列表条款的所有可能组合?

时间:2019-10-15 11:08:04

标签: python list combinations permutation itertools

我需要在列表中创建条款的 all 个组合。我尝试使用itertools的所有部分,例如permutationscombinationscombinations_with_replacement,但它们似乎几乎都在“计数”。例如,使用以下代码:

from itertools import combinations_with_replacement
hex_chars = ["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"]
perm = combinations_with_replacement(hex_chars, 5) 
for i in list(perm): 
    print(i)

它产生:

('0', '0', '0', '0', '0')
('0', '0', '0', '0', '1')
('0', '0', '0', '0', '2')
('0', '0', '0', '0', '3')
('0', '0', '0', '0', '4')
('0', '0', '0', '0', '5')
('0', '0', '0', '0', '6')
('0', '0', '0', '0', '7')
('0', '0', '0', '0', '8')
('0', '0', '0', '0', '9')
('0', '0', '0', '0', 'a')
('0', '0', '0', '0', 'b')
('0', '0', '0', '0', 'c')
('0', '0', '0', '0', 'd')
('0', '0', '0', '0', 'e')
('0', '0', '0', '0', 'f')
('0', '0', '0', '1', '1')

我需要它来产生几乎所有可能的组合,例如,您会注意到它不会产生“ 000010”,并且如果放置足够长的时间,它将不会产生诸如“ A000A”之类的字符串。我需要产生字符串长度为5的所有组合(包括重复项),然后将它们全部保存到外部文本文件中。而且,为澄清起见,我实际上是指每个可能的组合,例如“ A0000”,“ 0A000”,“ 00A00”,“ 000A00”,“ 0000A0”,“ 00000A”。

1 个答案:

答案 0 :(得分:-1)

from itertools import permutations
perm = permutations(hex_chars, 5)
while a:
    try: 
        print(next(a))
    except:
        pass

起初没有注意到重复的部分,我想您可以键入每个字符5次