Skip to main content

How to Print Alternate Characters in a Python String

This guide explains how to extract and print alternate characters from a string in Python. We'll cover the most efficient and Pythonic method using string slicing, and we'll also look at a less efficient approach using enumerate() for comparison.

String slicing is the most concise and efficient way to get alternate characters. The general syntax is string[start:stop:step]. For alternate characters, we'll use a step of 2.

Starting from the First Character (Index 0)​

To get every other character starting from the first character (index 0), use a step of 2 and omit the start and stop indices:

my_str = 'tutorialreference'
result = my_str[::2] # Start at 0, go to the end, step by 2
print(result) # Output: ttrarfrne
  • [::2]: This slice says:
    • Start at the beginning (omitted start index defaults to 0).
    • Go to the end (omitted stop index defaults to the end).
    • Take every second character (step of 2).

Starting from the Second Character (Index 1)​

To get every other character starting from the second character (index 1), set the start index to 1:

my_str = 'tutorialreference'
result = my_str[1::2] # Start at 1, go to the end, step by 2
print(result) # Output: uoileeec
  • The [1::2] specifies that the string slice should begin at index 1.

Printing Alternate Characters with enumerate() (Less Efficient)​

While slicing is the preferred method, you can use enumerate() and the modulo operator (%) to achieve the same result. This is less efficient and less readable, but it demonstrates a different approach:

my_str = 'tutorialreference'
result = ''

for index, char in enumerate(my_str):
if index % 2 == 0: # Check for even indices
result += char

print(result) # Output: ttrarfrne
  • enumerate(my_str): This returns pairs of (index, character) for each character in the string.
  • if index % 2 == 0: This checks if the index is even. If it is, we append the character to the result string.
note

Why slicing is better: Slicing directly operates on the string's internal representation, making it much faster than iterating character by character. The enumerate() approach, while functional, is unnecessarily complex for this task.