Skip to main content

How to Split, Reverse, and Join Strings in Python

This guide explains a common string manipulation task in Python: splitting a string into a list of words, reversing the order of those words, and then joining them back into a single string. We'll focus on the most efficient and Pythonic approach using str.split(), slicing for reversal, and str.join().

Splitting, Reversing, and Joining a String

Here's the most concise and efficient way to split, reverse, and rejoin a string in Python:

my_str = 'tutorial reference com'

my_list = my_str.split(' ') # 1. Split into a list of words
print(my_list) # Output: ['tutorial', 'reference', 'com']

reversed_list = my_list[::-1] # 2. Reverse using slicing.
print(reversed_list) # Output: ['com', 'reference', 'tutorial']

my_str_again = ' '.join(reversed_list) # 3. Join back into a string
print(my_str_again) # Output: com reference tutorial
  • You can also reverse the list in place using the reverse() method.
  • This example uses spaces as the delimiter, however you can use other delimiters.

Understanding the Steps

Let's break down each step in detail:

Splitting the String (str.split()):

my_str = 'tutorial reference com'
my_list = my_str.split(' ') # Split on spaces
print(my_list) # Output: ['tutorial', 'reference', 'com']

# Example with a different delimiter:
my_str_comma = 'tutorial,reference,com'
my_list_comma = my_str_comma.split(',') # Split on commas
print(my_list_comma) # Output: ['tutorial', 'reference', 'com']
  • my_str.split(' '): The split() method divides the string into a list of substrings. The argument to split() is the delimiter. If you don't provide an argument, it splits on whitespace (spaces, tabs, newlines).

Reversing the List (Slicing)

The most efficient way to reverse a list without modifying the original is to use slicing with a step of -1:

my_list = ['tutorial', 'reference', 'com']
reversed_list = my_list[::-1] # Reverse using slicing
print(reversed_list) # Output:['com', 'reference', 'tutorial']
print(my_list) # Output:['tutorial', 'reference', 'com']
  • my_list[::-1]: Creates a reversed copy of the list. The original my_list is unchanged.
  • The [::-1] slice creates a reversed copy of the list.
  • If you want to reverse the list in place using my_list.reverse(), you can do that as well, but that will change the my_list variable:
my_list = ['tutorial', 'reference', 'com']
my_list.reverse() # Reverse IN PLACE
print(my_list) # Output: ['com', 'reference', 'tutorial']

Joining the List (str.join()):

my_list = ['tutorial', 'reference', 'com']

my_list.reverse()
print(my_list) # Output: ['com', 'reference', 'tutorial']

my_str_again = ' '.join(my_list)
print(my_str_again) # Output: com reference tutorial

my_str_again = ','.join(my_list)
print(my_str_again) # Output: com,reference,tutorial

my_str_again = ''.join(my_list)
print(my_str_again) # Output: comreferencetutorial
  • ' '.join(reversed_list): The join() method takes an iterable (like a list) of strings and concatenates them into a single string. The string you call join() on (in this case, a space: ' ') is used as the separator between the elements.
  • You can use any separator you want (e.g., ',', '-', or even '' for no separator).