itertools.product
生成一个列表的所有排列非常方便,但是如果一次只有该列表的一个元素可以填充任何排列,我们如何继续牵连另一个元素列表?
在伪代码中:
from itertools import product
product('ABC', repeat=1) + ['.', '%3A']
->A, B, C, .A, .B, .C, A., B., C., %3AA, %3AB, %3AC, A%3A, B%3A, C%3A
我想这将是非常重要的,并且必须调整排列构建算法。
最佳答案
您有 3 个系列。将原始输入字符串作为列表,然后添加和追加。分别生成这三个:
from itertools import chain, product
inputstring = 'ABC'
extra = ['.', '%3A']
for combo in chain(inputstring,
product(extra, inputstring), product(inputstring, extra)):
combo = ''.join(combo)
print(combo)
带有列表理解的演示:
>>> from itertools import chain, product
>>> inputstring = 'ABC'
>>> extra = ['.', '%3A']
>>> [''.join(combo) for combo in chain(inputstring, product(extra, inputstring), product(inputstring, extra))]
['A', 'B', 'C', '.A', '.B', '.C', '%3AA', '%3AB', '%3AC', 'A.', 'A%3A', 'B.', 'B%3A', 'C.', 'C%3A']
关于python - 如何生成列表的所有排列以及添加在任何排列中只能出现一次的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41431119/