What is the simplest way to swap each pair of adjoining chars in a string with Python?
What is the simplest way to swap each pair of adjoining chars in a string with Python?
oneliner:
>>> s = badcfe
>>> .join([ s[x:x+2][::-1] for x in range(0, len(s), 2) ])
abcdef
- s[x:x+2] returns string slice from x to x+2; it is safe for odd len(s).
- [::-1] reverses the string in Python
- range(0, len(s), 2) returns 0, 2, 4, 6 … while x < len(s)
The usual way to swap two items in Python is:
a, b = b, a
So it would seem to me that you would just do the same with an extended slice. However, it is slightly complicated because strings arent mutable; so you have to convert to a list and then back to a string.
Therefore, I would do the following:
>>> s = badcfe
>>> t = list(s)
>>> t[::2], t[1::2] = t[1::2], t[::2]
>>> .join(t)
abcdef
What is the simplest way to swap each pair of adjoining chars in a string with Python?
Heres one way…
>>> 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
>>>