python - 如何生成列表的所有排列以及添加在任何排列中只能出现一次的字符串

标签 python algorithm combinatorics

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/

相关文章:

database - 从数据库表增量导出记录

algorithm - 找到与特定数字最接近的数字组合

python - 找到可以重新排列序列的方式的数量

c++ - 我的程序编写每十亿个组合的更有效方法?

python - 通过另一个 DataFrame 的索引选择某些行

python - 我可以在 Python 类型提示中使用 __qualname__ 并推迟注释评估吗?

python - 为什么我的 python 脚本只写 SELECT sql 查询的最后一行

python - AppEngine - AppEngine HR 数据存储中奇怪的 ID 分配

java - 是否可以将哈希码限制为Java中的特定字符数

algorithm - 真的很难理解后缀树