Итерирование по строке

В С++ я мог бы сделать:

for (int i = 0; i < str.length(); ++i)
    std::cout << str[i] << std::endl;

Как выполнить итерацию по строке в Python?

Ответ 1

Как отметил Йоханнес,

for c in "string":
    #do something with c

Вы можете много итератировать в python с помощью конструкции for loop,

например, open("file.txt") возвращает объект файл (и открывает файл), итерация по нему итерации по строкам в этом файле

for line in open(filename):
    # do something with line

Если это похоже на волшебство, хорошо, что это так, но идея позади этого очень проста.

Там есть простой протокол итератора, который может быть применен к любому типу объекта, чтобы сделать цикл for на нем.

Просто реализуйте итератор, который определяет метод next() и реализует метод __iter__ для класса, чтобы сделать его итерабельным. (__iter__, конечно, должен возвращать объект итератора, то есть объект, который определяет next())

См. официальную документацию

Ответ 2

Если вам нужен доступ к индексу при повторении этой строки, используйте enumerate():

>>> for i, c in enumerate('test'):
...     print i, c
... 
0 t
1 e
2 s
3 t

Ответ 3

Еще проще:

for c in "test":
    print c

Ответ 4

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

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

Но опять же, зачем это делать, когда строки неотъемлемо итерабельны?

for i in str:
    print i

Ответ 5

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

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

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

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

или более широко:

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

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

Ответ 6

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

#suppose you have variable name
name = "Mr.Suryaa"
for index in range ( len ( name ) ):
    print ( name[index] ) #just like c and c++ 

Ответ

M r. S u r y a a

Мы использовали буксир Встроенные функции (BIF в сообществе Python)

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

for i in range ( 5 ) :
can produce 0 , 1 , 2 , 3 , 4

2) len() - len() BIF используется для определения длины заданной строки

Ответ 7

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