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

2024-10-01 17:41:38 发布

您现在位置:Python中文网/ 问答频道 /正文

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

x = 'costumye'

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

x = 'costumye'
possible_w = []
def swap(wurd):
    wurd = list(wurd)
    for i in range(len(wurd)-1):
        reg = x[i], x[i+1]
        reg = x[i+1], x[i]
        print(reg)
swap(x)  

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


Tags: 工具实例方法字符串代码列表情况reg
1条回答
网友
1楼 · 发布于 2024-10-01 17:41:38

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

  • 直到位置i的字母
  • i+1i的字母
  • 其余部分

简单地将它们连接起来,以便给出单词x和位置i

swap_word = x[:i] + x[i+1] + x[i] + x[i+2:]

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

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) ]

相关问题 更多 >

    热门问题