我如何在Python中迭代一个字符串(从字符串中获得每个字符,一次一个,每次通过循环)?


当前回答

只是做一个更全面的回答,如果你真的想把一个方钉子塞进一个圆洞里,可以在Python中应用C语言迭代字符串的方式。

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

但话说回来,当字符串本质上是可迭代的时,为什么要这样做呢?

for i in str:
    print i

其他回答

只是做一个更全面的回答,如果你真的想把一个方钉子塞进一个圆洞里,可以在Python中应用C语言迭代字符串的方式。

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

但话说回来,当字符串本质上是可迭代的时,为什么要这样做呢?

for i in str:
    print i

如果您希望使用更函数化的方法来迭代字符串(也许以某种方式转换它),您可以将字符串分割为字符,对每个字符应用一个函数,然后将生成的字符列表连接回字符串。

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

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

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

或者更一般地说:

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

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

约翰内斯指出,

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

你可以使用for循环构造在python中迭代几乎任何东西,

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

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

如果这看起来像魔法,好吧,它有点像,但它背后的想法真的很简单。

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

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

参见官方文件

你还可以做一些有趣的事情通过使用for循环来完成工作

#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 y a a

然而,由于range()创建了一个序列值列表,因此您可以直接使用该名称

for e in name:
    print(e)

这也会产生相同的结果,而且看起来更好,适用于任何序列,如列表、元组和字典。

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

1) range() - range() BIF用于创建索引 例子

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

2) len() - len() BIF用于找出给定字符串的长度

更简单:

for c in "test":
    print c