我想在恒定长度 (5)
内找到两个字符串列表的所有可能排列。假设 list_1 = ["A"]
和 list_2 = ["BB"]
。
所有可能的组合是:
A A A A A
A A A BB
A A BB A
A BB A A
BB A A A
A BB BB
BB A BB
BB BB A
我试图用下面的代码实现它,但我不确定如何为它定义长度 5。
import itertools
from itertools import permutations
list_1 = ["A"]
list_2 = ["BB"]
unique_combinations = []
permut = itertools.permutations(list_1, 5)
for comb in permut:
zipped = zip(comb, list_2)
unique_combinations.append(list(zipped))
print(unique_combinations)
最佳答案
使用递归:
list_1 = ["A"]
list_2 = ["BB"]
size = 5
strs = list_1 + list_2
res = []
def helper(strs, size, cur, res):
if size == 0:
res.append(cur)
return
if size < 0:
return
for s in strs:
helper(strs, size-len(s), cur+[s], res)
helper(strs, size, [], res)
print(res)
无递归:
list_1 = ["A"]
list_2 = ["BB"]
size = 5
strs = list_1 + list_2
res = []
q = [[]]
while q:
t = q.pop()
for s in strs:
cur = t + [s]
cursize = len(''.join(cur))
if cursize == size:
res.append(cur)
elif cursize < size:
q.append(cur)
print(res)
关于python - 如何在恒定长度内找到两个字符串的所有可能排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64756919/