Другая альтернатива - использовать zip
, это, вероятно, самый питонический способ сделать это.
string = "1234abdchdj星期上午十时*&()"
for a, b in zip(string, string[1:]):
print(a, b)
В зависимости от того, что вы хотите сделать для последнего символа )
, вы также можете использовать zip_longest
:
from itertools import zip_longest
for a, b in zip_longest(string, string[1:], fillvalue="-"):
print(a, b)
Будет печататься так же, как и до добавления строки, содержащей ) -
в конце.
Если вам нужно сэкономить немного памяти, вы даже можете использовать islice
:
from itertools import islice
string = "1234abdchdj星期上午十时*&()"
for a, b in zip(string, islice(string, 1, None)):
print(a, b)
Классический срез [1:]
создает второй массив, тогда как при этом создается итератор для того же массива. Но если вам действительно не нужно сохранять эту память, я бы придерживался string[1:]
.