-3

为什么 for 循环不使 i 成为整数并循环遍历字符串中的每个索引?这只是 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
    >>> 
4

3 回答 3

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

于 2013-09-18T17:37:37.420 回答
2

在您的循环中,ia.

要以任何一种方式解决您的问题,请考虑引入ranges 或直接打印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

于 2013-09-18T17:35:40.183 回答
0

这是因为s不是索引

>>> a = "1234567890"
>>> print a[0]
1
>>> for s in a:
...     print s
... 
1
2
3
4
5
6
7
8
9
0
>>>
于 2013-09-18T17:35:48.983 回答