12

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?

2
  • Possible duplicate of Reverse a string in Python Commented Feb 4, 2018 at 11:01
  • 2
    I think reverse is the wrong term here. Commented Feb 4, 2018 at 11:08

5 Answers 5

17

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'
Sign up to request clarification or add additional context in comments.

1 Comment

I like that answer because it also works with empty strings.
11

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 +.

2 Comments

How should I do if the list is numbers? because I got error : unsupported operand type(s) for +: 'int' and 'list'
This is for strings. Maybe you men a list of numbers [1, 2, 3]? >>> L = [1, 2, 3] >>> L[-1:] + L[:-1] [3, 1, 2]
7

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]

Comments

3

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

Comments

1

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.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.