迭代一个string

在C ++中,我可以这样做:

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

我如何迭代Python中的string?

正如约翰内斯指出的那样,

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

您可以使用for loop构造在python中迭代几乎任何东西,

例如, open("file.txt")返回一个文件对象(并打开文件),迭代它遍历该文件中的行

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

如果这看起来像魔术,那么它就是有点,但它背后的想法非常简单。

有一个简单的迭代器协议,可以应用于任何types的对象,使for循环工作。

只需实现一个定义next()方法的迭代器,然后在类上实现一个__iter__方法以使其可迭代。 (当然__iter__应该返回一个迭代器对象,也就是定义next()一个对象)

见官方文档

如果在迭代string时需要访问索引,请使用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遍历一个string的方式可以应用在Python中。

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

但是话又说回来,为什么string本身是可迭代的呢?

 for i in str: print i 

如果你想使用更多function的方法来遍历一个string(也许以某种方式进行转换),可以将string拆分为字符,对每个string应用一个函数,然后将返回的字符连接回string。

一个string本质上是一个字符列表,因此'map'将迭代string – 作为第二个参数 – 将函数 – 第一个参数 – 应用于每个string。

例如,在这里我使用一个简单的lambda方法,因为我所要做的只是对字符的一个简单的修改:在这里,增加每个字符值:

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

或更一般地说:

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

其中my_function接受一个char值并返回一个char值。

那么你也可以做一些有趣的事情,并使用for循环来完成你的工作

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

答案是

先生 。 你好

我们使用了两个内置函数(Python社区中的BIF)

1)range() – range()BIF用于创build索引示例

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

2)len() – len()BIF用于找出给定string的长度

这里有几个答案使用rangexrange通常更好,因为它返回一个生成器,而不是一个完全实例化的列表。 如果存储器和/或可变长度的迭代器可能成为问题,则xrange是优越的。