迭代从索引开始的python字符串

use*_*066 6 python string iterator character

如果我有一个非常长的字符串(比如说1亿个字符),有没有办法使用类似for c in str:但是开始一定数量的字符来迭代字符?我不希望切片并使用子集,因为我知道切割字符串会产生副本(在我的情况下非常昂贵).换句话说,我可以为字符串指定迭代器的起始点吗?

Rég*_* B. 9

在python3中range是一个生成器,而不是一个列表.这意味着以下代码不需要过多的内存:

for i in range(start_pos, len(my_string)):
   print(my_string[i])
Run Code Online (Sandbox Code Playgroud)

如果您宁愿使用迭代器,my_string那么您需要自己编写:

def iter_starting_at(start_pos, string):
    for i in range(start_pos, len(string)):
        yield string[i]

for character in iter_starting_at(start_pos, my_string):
    print(character)
Run Code Online (Sandbox Code Playgroud)