使用Python生成两个字符串的组合
我有一个字符串str1=“ABC”,我需要在字符串str1中插入0到len(str1)个“x”,除了最后一个位置 在上面的例子中,我想要一个0到2“x”的结果列表,放在字符串的前面或里面使用Python生成两个字符串的组合,python,string,concatenation,combinations,permutation,Python,String,Concatenation,Combinations,Permutation,我有一个字符串str1=“ABC”,我需要在字符串str1中插入0到len(str1)个“x”,除了最后一个位置 在上面的例子中,我想要一个0到2“x”的结果列表,放在字符串的前面或里面 ["ABC", "xABC", "AxBC", "ABxC", "xxABC", "xAxBC", "xABxC", "AxxBC", "AxBxC", "ABxxC"] 我尝试了一些代码,如下所示(我确实意识到我遗漏了一些组合): 我真的不确定如何处理另一个案例,例如xAxBC等 解决此问
["ABC",
"xABC",
"AxBC",
"ABxC",
"xxABC",
"xAxBC",
"xABxC",
"AxxBC",
"AxBxC",
"ABxxC"]
我尝试了一些代码,如下所示(我确实意识到我遗漏了一些组合):
我真的不确定如何处理另一个案例,例如xAxBC等
解决此问题的最佳方法是什么?使用获取要插入的索引x
s:
import itertools
str1 = "ABC"
lst = list(str1)
for n in range(len(str1)):
for idxs in itertools.combinations_with_replacement(range(len(str1)), n):
xs = lst[:]
for i in reversed(idxs): # Use reversed, otherwise index become invald
xs.insert(i, 'x')
print(''.join(xs))
输出:
ABC
xABC
AxBC
ABxC
xxABC
xAxBC
xABxC
AxxBC
AxBxC
ABxxC
用于获取要插入的索引x
s:
import itertools
str1 = "ABC"
lst = list(str1)
for n in range(len(str1)):
for idxs in itertools.combinations_with_replacement(range(len(str1)), n):
xs = lst[:]
for i in reversed(idxs): # Use reversed, otherwise index become invald
xs.insert(i, 'x')
print(''.join(xs))
输出:
ABC
xABC
AxBC
ABxC
xxABC
xAxBC
xABxC
AxxBC
AxBxC
ABxxC
可能与@alko重复感谢您指出这一点。但是问题不一样。@alko的可能重复。谢谢你指出这一点。但是问题不一样。哇,你太快了,我花了这么长时间才找到它的名字。这是参考资料:谢谢你的回答!虽然这对于长度高达10-15的字符串似乎效果很好,但对于较大的数字来说,它的速度会非常慢。有什么办法可以加快速度吗?比如回忆录?我尝试了一些在开始添加x时重复的行(xABC、AxBC、ABxC),比如xxABC、xAxBC、xABxC。哇,你太快了,我花了这么长时间才找到它的名称。这是参考资料:谢谢你的回答!虽然这对于长度高达10-15的字符串似乎效果很好,但对于较大的数字来说,它的速度会非常慢。有什么办法可以加快速度吗?比如回忆录?我尝试了一些行(xABC、AxBC、ABxC),当在开始添加x时,它们会重复,比如xxABC、xAxBC、xABxC。