Python“FOR”循环给出字符串索引错误

时间:2013-09-18 17:33:53

标签: python

为什么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
    >>> 

3 个答案:

答案 0 :(得分:2)

在您的循环中,ia中的每个字符。

要解决您的问题,请考虑引入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
>>>