代码之家  ›  专栏  ›  技术社区  ›  agftrading

对字符串中的字母进行重新排序的最有吸引力的方法是什么?

  •  0
  • agftrading  · 技术社区  · 5 年前

    我想取一个字符串,改变字符串中字母的顺序。

    s = 'Hello World!'
    s = s[6:] + s[5:6] + s[:5]
    s
    

    'World! Hello'
    

    这就是我想要达到的目标。

    谢谢!


    以后编辑:

    s = 'HelloWorld!'
    s = s[5:] + s[:5]
    s
    

    这将产生输出:

    'World!Hello'
    

    注意:我希望能够使用元素的索引显式指定切片发生的位置,并切换两个切片的位置。

    所以也可能是:

    s = 'HelloWorld!'
    s = s[6:] + s[:6]
    s
    

    'orld!HelloW'
    

    谢谢!

    2 回复  |  直到 5 年前
        1
  •  1
  •   Devesh Kumar Singh    5 年前

    s = "hello world"
    li = reversed(s.split())
    res = ' '.join(li)
    

    输出将是

    world hello
    

    或者我们可以在一行中完成所有这些

    s = "hello world"
    res = ' '.join(reversed(s.split()))
    

    为了在没有空格的字符串中反转单词,我们还需要知道单词的拆分位置,我们需要一个列表。 e、 g代表 HelloWorldThisIsMe ,该列表将 [0,5,10,14,16,18]

    因此,新代码将根据索引拆分单词,反转列表并将列表连接到一个字符串中

    def reorder(indexes, s):
    
        res = [s[indexes[idx]:indexes[idx+1]] for idx in range(len(indexes)-1)]
        return ''.join(reversed(res))
    
    print(reorder([0,5,10,14,16,18],'HelloWorldThisIsMe'))
    #MeIsThisWorldHello
    
    print(reorder([0,5,11],'HelloWorld!'))
    #World!Hello
    
        2
  •  0
  •   Anubhav Singh    5 年前

    我们也可以通过这种方式获得同样的结果:

    s = "Hello World!"
    rev = ' '.join(s.split(' ')[-1::-1])