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