python - 如何在 Python3 中使用不同种类的排列?

标签 python permutation

正常的排列是:

'ABC'
  ↓
'ACB'
'BAC'
'BCA'
'CAB'
'CBA'

但是,如果我想这样做怎么办:

'ABC'
  ↓
'AA'
'AB'
'AC'
'BA'
'BB'
'BC'
'CA'
'CB'
'CC'

这叫什么?对于具有数百个元素的数组来说,它的效率如何?

最佳答案

您的术语有点令人困惑:您所拥有的不是字符的排列,而是每个可能的字符与每个可能的字符的配对:笛卡尔积。

您可以使用itertools.product来生成这些组合,但请注意,这会返回一个迭代器而不是一个容器。因此,如果您需要列表中的所有组合,则需要显式构造一个列表:

from itertools import product
mystr = 'ABC'
prodlen = 2
products = list(product(mystr,repeat=prodlen))

或者,如果您只循环这些值:

for char1,char2 in product(mystr,repeat=prodlen):
    # do something with your characters
    ...

或者,如果您想生成 2 长度的字符串,您可以在列表理解中执行此操作:

allpairs = [''.join(pairs) for pairs in products]
# ['AA', 'AB', 'AC', 'BA', 'BB', 'BC', 'CA', 'CB', 'CC']

关于python - 如何在 Python3 中使用不同种类的排列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41233619/

相关文章:

python - 松弛 API : Do Something when button is clicked

python - 条件运行计数 Pandas

在组间匹配集之前优先考虑组内匹配集的算法

python - 如何在 Python 中迭代所有单词直到字母表的排列?

c# - 使用 C# 排列货架位置上的元素

Python Itertools 仅排列字母和数字

python - 不循环python计算评分数

python - 为什么我的 SGD 与我的线性回归模型相去甚远?

python - 我想用排列计算 "distance_table = []"中两个值之间的差值,在这种情况下如何正确使用排列?

python - 如何返回值名称(Alive、Dead)而不是返回 1 和 0