В С++ я мог бы сделать:
for (int i = 0; i < str.length(); ++i)
std::cout << str[i] << std::endl;
Как выполнить итерацию по строке в Python?
В С++ я мог бы сделать:
for (int i = 0; i < str.length(); ++i)
std::cout << str[i] << std::endl;
Как выполнить итерацию по строке в Python?
Как отметил Йоханнес,
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()
)
Если вам нужен доступ к индексу при повторении этой строки, используйте enumerate()
:
>>> for i, c in enumerate('test'):
... print i, c
...
0 t
1 e
2 s
3 t
Еще проще:
for c in "test":
print c
Чтобы сделать более полный ответ, C-путь итерации по строке может применяться в Python, если вы действительно хотите наложить квадратную привязку в круглое отверстие.
i = 0
while i < len(str):
print str[i]
i += 1
Но опять же, зачем это делать, когда строки неотъемлемо итерабельны?
for i in str:
print i
Если вы хотите использовать более функциональный подход к итерации по строке (возможно, чтобы каким-то образом ее преобразовать), вы можете разбить строку на символы, применить функцию к каждому из них, а затем присоединить полученный список символов обратно в строка.
Строка по сути является списком символов, поэтому "map" будет перебирать строку - в качестве второго аргумента - применение функции - первого аргумента - к каждому.
Например, здесь я использую простой лямбда-подход, поскольку все, что я хочу сделать, это тривиальная модификация символа: здесь, чтобы увеличить каждое значение символа:
>>> ''.join(map(lambda x: chr(ord(x)+1), "HAL"))
'IBM'
или более широко:
>>> ''.join(map(my_function, my_string))
где my_function принимает значение char и возвращает значение char.
Ну, вы также можете сделать что-то интересное и выполнить свою работу, используя цикл
#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 используется для определения длины заданной строки
В нескольких ответах здесь используется range
. xrange
обычно лучше, поскольку он возвращает генератор, а не полностью созданный список. Если память и/или итеративы с широким размахом могут быть проблемой, xrange
превосходит.