Rotating strings in Python

Question:

I was trying to make the string HELLO to OHELL in Python. But couldn’t get any way to rotate it without working with loops. How to code for it in just 1-2 lines so that I could get the desired pattern?

Asked By: Mohit Gidwani

||

Answers:

You can slice and add strings:

>>> s = 'HELLO'
>>> s[-1] + s[:-1]
'OHELL'

This gives you the last character:

>>> s[-1]
'O'

and this everything but the last:

>>> s[:-1]
'HELL'

Finally, add them with +.

Answered By: Mike Müller

Here is one way:

def rotate(strg, n):
    return strg[n:] + strg[:n]

rotate('HELLO', -1)  # 'OHELL'

Alternatively, collections.deque (“double-ended queue”) is optimised for queue-related operations. It has a dedicated rotate() method:

from collections import deque

items = deque('HELLO')
items.rotate(1)

''.join(items)  # 'OHELL'
Answered By: jpp

I would agree with Mike Müller’s answer:

s = 'HELLO'
s = s[-1] + s[:-1]

I would like to share another way of looking at s[:-1]

s[0:-1]

This means that it is starting from the start and including everything except for s[-1].
I hope this helped.

Answered By: Surya Kannan KMS

Here is a simple way of looking at it…

s = 'HELLO'
for r in range(5):
    print(s[r:] + s[:r])


HELLO
ELLOH
LLOHE
LOHEL
OHELL
Answered By: Konchog

Here is what I use to rotate strings in Python3:

To rotate left by n:

def leftShift(text,n):
    return text[n:] + text[:n]

To rotate right by n:

def rightShift(text,n):
    return text[-n:] + text[:-n]
Answered By: Clayton C.
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.