温馨提示:本文翻译自stackoverflow.com,查看原文请点击:python - TypeError: 'int' object is not iterable
python

python - TypeError:“ int”对象不可迭代

发布于 2020-03-27 11:21:29

由于项目稍后的原因,我有一个要迭代的列表列表。但是,当我尝试以常规的pythonic方式遍历每个列表时,出现了错误TypeError: 'int' object is not iterable因此,为了测试代码的工作方式,我编写了

for i in self.features:
  print(i)
  print("Test1")

for i in len(self.features):
  print(i)
  print("Test2")

该程序能够成功执行Test1循环中的所有项目,而第二个都不执行。对于第一个测试,输出为:

Test1
2      169.091522
3      171.016678
4      170.381485
5      170.361954
6      170.322845
 ....
245    149.510544
246    145.642090
247    155.898438
248    154.886688
249    154.966034
Name: Adj Close, Length: 248, dtype: float64

因此,功能似乎是列表的列表,就像我想要的一样,但是似乎不想让我做通常可以对列表执行的操作。

要查看运行中的代码,可以在这里运行它 https://repl.it/@JacksonEnnis/KNNFinalProduct

查看更多

查看更多

提问者
Jackson Ennis
被浏览
24
Jim Wright 2019-07-03 22:48

len()以形式返回列表的长度intPython将您的代码解释为:

for i in 5:
  print(i)
  print("Test2")

在解释该for语句时它将失败,并且永远不会进入循环。


要正确地遍历列表,您的第一个代码段是正确的。

for i in self.features:
  print(i)
  print("Test1")

如果要遍历不超过列表大小的数字范围,则应使用range()

for i in range(1, len(self.features) + 1):
  print(i)
  print("Test2")

如@PeterWood所建议,您也可以使用enumerate()

for i, _ in enumerate(self.features, 1):
  print(i)
  print("Test2")