Python 3。如何找到字符串中所有可能的连续字符交换

Python 3。如何找到字符串中所有可能的连续字符交换,python,string,list,function,recursion,Python,String,List,Function,Recursion,我试图找到一种方法,能够得到一个字符串中所有可能的连续字符交换的列表。我必须在没有任何像itertools这样的花哨工具的情况下完成这项工作,这使得它变得更加困难。例如: x = 'costumye' 应提供以下清单: ['ocstumye'、'csotumye'、'cotsumye',…因为有很多可能性,'costumye'] 我的代码: 仅此代码就可以获得单词应该交换位置的正确的不同实例。糟糕的是,它们只是元组,这是有道理的。现在,我很难为每次交换更改整个单词,也很难将每个交换实例添加到列

我试图找到一种方法,能够得到一个字符串中所有可能的连续字符交换的列表。我必须在没有任何像itertools这样的花哨工具的情况下完成这项工作,这使得它变得更加困难。例如:

x = 'costumye'
应提供以下清单: ['ocstumye'、'csotumye'、'cotsumye',…因为有很多可能性,'costumye'] 我的代码:


仅此代码就可以获得单词应该交换位置的正确的不同实例。糟糕的是,它们只是元组,这是有道理的。现在,我很难为每次交换更改整个单词,也很难将每个交换实例添加到列表中,以获得具有所有可能性的最终列表。

首先,编写代码,将给定位置I与下一个字母交换。新词中有四个元素:

这些字母一直到位置i i+1和i处的字母 其余部分 简单地按顺序连接它们-给出单词x和位置i

现在,您需要对所有可交换的位置进行循环:

for i in range(len(x)-1):    # Don't try to swap the last letter with the one after
最后,积累结果。从空列表开始;在每次迭代中添加新词:

swap_list = []
for i in range(len(x)-1):    # Don't try to swap the last letter with the one after
    swap_word = x[:i] + x[i+1] + x[i] + x[i+2:]
    swap_list.append(swap_word)
你能从那里结束吗

太好了。现在,如果您想要更高平面的python答案,您的整个函数将简化为一个列表理解:为有效范围内的每个位置返回此字符串表达式的列表

return [ x[:i] + x[i+1] + x[i] + x[i+2:] for i in range(len(x)-1) ]

reg与您想要的输出有什么关系?为什么分配给它,它们会立即覆盖它?哦,我只是在用索引测试交换。我覆盖它,因为这就是我交换连续字母的方法。是的,我想我得到了。是的,我能够在我的函数中实现它。非常感谢您解决了最后一封和之前的信件问题。
swap_list = []
for i in range(len(x)-1):    # Don't try to swap the last letter with the one after
    swap_word = x[:i] + x[i+1] + x[i] + x[i+2:]
    swap_list.append(swap_word)
return [ x[:i] + x[i+1] + x[i] + x[i+2:] for i in range(len(x)-1) ]