为什么for循环不能使我成为一个整数并将其循环遍历我的字符串中的每个indice? 这只是for循环的一般过期。 Python使它变得如此微小,我几乎无法理解“for”和“in”这两个词的强大程度。
>>> a = "1234567890"
>>> print a[0]
1
>>> for i in a:
... print a[i]
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
TypeError: string indices must be integers, not str
>>>
答案 0 :(得分:2)
在您的循环中,i
是a
中的每个字符。
要解决您的问题,请考虑引入range
或直接打印i
。
for i in a:
print i
或
for i in range(len(a)):
print a[i]
虽然第一种解决方案是首选(更快),但它们会产生相同的结果。
In [1]: a = "abcdefghi"
In [2]: for i in a:
...: print i
...:
a
b
c
d
e
f
g
h
i
In [3]: for i in range(len(a)):
print a[i]
...:
a
b
c
d
e
f
g
h
i
您还可以采用xrange
进一步优化第二种解决方案。
答案 1 :(得分:2)
在python中执行for i in a
时,i是列表/字符串a
中的项目,因为它顺序通过。
您想要做的是:
for i in a:
print i
如果您想根据索引执行此操作,可以使用range
for i in range(len(a)):
print a[i]
range(len(a))
创建一个从0到列表/字符串长度的列表a
答案 2 :(得分:0)
这是因为s
不是索引
>>> a = "1234567890"
>>> print a[0]
1
>>> for s in a:
... print s
...
1
2
3
4
5
6
7
8
9
0
>>>