使用Python在字符串中交换char的最简单方法是什么?

coc*_*ear 17 python string

我想在字符串中交换每对字符.'2143'成为'1234','badcfe'成为'abcdef'.

我怎么能用Python做到这一点?

Pau*_*ine 14

oneliner:

>>> s = 'badcfe'
>>> ''.join([ s[x:x+2][::-1] for x in range(0, len(s), 2) ])
'abcdef'
Run Code Online (Sandbox Code Playgroud)
  • s [x:x + 2]将字符串切片从x返回到x + 2; 奇数len是安全的.
  • [:: - 1]在Python中反转字符串
  • range(0,len(s),2)返回0,2,4,6 ...而x <len(s)


Dun*_*can 10

在Python中交换项目的常用方法是:

a, b = b, a
Run Code Online (Sandbox Code Playgroud)

所以在我看来,你只是对扩展切片做同样的事情.它有点复杂,因为字符串不可变,所以你必须转换为一个列表,然后回到一个字符串,但我要做的是:

>>> s = 'badcfe'
>>> t = list(s)
>>> t[::2], t[1::2] = t[1::2], t[::2]
>>> ''.join(t)
'abcdef'
Run Code Online (Sandbox Code Playgroud)

  • 好点子.也许抛出一个信息异常:-) (2认同)

Fog*_*ird 7

这是一种方法

>>> s = '2134'
>>> def swap(c, i, j):
...  c = list(c)
...  c[i], c[j] = c[j], c[i]
...  return ''.join(c)
...
>>> swap(s, 0, 1)
'1234'
>>>
Run Code Online (Sandbox Code Playgroud)

  • s ='2143'而不是'2134',您使用了未定义的var c (2认同)