【问题标题】:'int' object is not iterable'int' 对象不可迭代
【发布时间】:2012-06-21 02:53:14
【问题描述】:

7.3 并且想知道为什么在以下示例中字符串“racecar”被视为 int 类型。 在此先感谢您的帮助

>>> s = "racecar"

>>> for i in len(s):

    print(s[i]) 

Traceback (most recent call last):

  File "<pyshell#9>", line 1, in <module>

    for i in len(s):

TypeError: 'int' object is not iterable

【问题讨论】:

  • 不是“string 'racecar'”,而是“len(s)”要遍历。 “len(s)”的结果是int

标签: python string int iterable


【解决方案1】:

因为您需要使用 range(len(s)) 来获取要迭代的整数列表(或在 Python 2.x 中使用 xrange)。

或者,您可以使用enumerate()

for i, val in enumerate(s):
    print(i)
    print(val) # equivalent to s[i]

或者一开始就不使用索引:

for c in s:
    print(c)

【讨论】:

  • +1 表示不使用索引。说真的,您从哪里得到想要或需要使用索引的想法?大概来自另一种编程语言。 Python 比这更好。
【解决方案2】:

你应该这样做:

for i in xrange(len(s)):

【讨论】:

  • 刚刚快速运行它,我得到了这个错误:NameError: name 'xrange' is not defined
  • 听起来你在 Python3 中。试试 range 而不是 xrange。
猜你喜欢
  • 2013-08-02
  • 1970-01-01
  • 2017-09-11
  • 2015-04-14
  • 1970-01-01
  • 1970-01-01
  • 2022-07-01
相关资源
最近更新 更多