5

Итерация по каждому символу строки в Python

66

Заголовок: Как пройти по строке в Python и получать каждый символ по одному разу в цикле?

Описание проблемы:

Я пытаюсь пройти по строке в Python, чтобы получать каждый символ по одному за раз в цикле. Мне нужно итерироваться по строке, чтобы выполнять некоторые действия с каждым символом. Я знаю, что в Python можно использовать циклы, но не совсем уверен, как правильно это сделать. Какие существуют подходы для итерации по строке и получения каждого символа по отдельности? Буду признателен за любые советы или примеры кода.

5 ответ(ов)

0

Конечно! Вот аналогичный код на Python, который распечатает каждый символ строки "test":

for c in "test":
    print(c)

Обратите внимание, что в Python 3 необходимо использовать круглые скобки для функции print(). Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать!

0

Чтобы дать более полное ответ на ваш вопрос, можно отметить, что способ итерации по строке в C также может быть применен в Python, если вы действительно хотите заставить квадратный колышек войти в круглое отверстие.

i = 0
while i < len(str):
    print(str[i])
    i += 1

Но, откровенно говоря, зачем это делать, когда строки и так являются итерируемыми?

for i in str:
    print(i)

Использование цикла for в данном случае гораздо более идиоматично и упрощает код.

0

Вы можете сделать что-то интересное, используя цикл for, чтобы выполнить вашу задачу:

# Предположим, у вас есть переменная name
name = "Mr.Suryaa"
for index in range(len(name)):
    print(name[index])  # как в C и C++

Результат будет:

M
r
.
S
u
r
y
a
a

Однако, поскольку range() создает последовательность значений, вы можете использовать переменную name напрямую:

for e in name:
    print(e)

Это также даст такой же результат, но выглядит лучше и работает с любыми последовательностями, такими как списки, кортежи и словари.

Мы использовали две встроенные функции (BIF - Built-in Functions) в сообществе Python:

  1. range() - встроенная функция range() используется для создания индексов. Пример:

    for i in range(5):
        # это даст 0, 1, 2, 3, 4
    
  2. len() - встроенная функция len() используется для определения длины данной строки.

0

Если вы хотите использовать более функциональный подход для перебора строки (возможно, чтобы каким-то образом трансформировать её), вы можете разбить строку на символы, применить функцию к каждому символу, а затем объединить полученный список символов обратно в строку.

Строка по своей сути является списком символов, поэтому функция map будет итерироваться по строке - в качестве второго аргумента - применяя функцию - первый аргумент - к каждому символу.

Например, вот как можно использовать простой подход с использованием lambda-функции, поскольку всё, что я хочу сделать, - это тривиальное изменение символа: здесь я увеличиваю значение каждого символа на единицу:

>>> ''.join(map(lambda x: chr(ord(x)+1), "HAL"))
'IBM'

Или, более обобщённо:

>>> ''.join(map(my_function, my_string))

где my_function принимает символ и возвращает символ.

0

В нескольких ответах здесь используется range. Однако xrange обычно лучше, так как возвращает генератор, а не полностью созданный список. Если есть проблемы с памятью или когда длины итерируемых объектов варьируются, xrange будет предпочтительнее.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь