TypeError:“ int”对象不可迭代-而是一个列表

时间:2019-07-03 14:39:28

标签: python

由于项目稍后的原因,我有一个要迭代的列表列表。但是,当我尝试以常规的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

1 个答案:

答案 0 :(得分:3)

len()将列表的长度作为int返回。 Python将您的代码解释为:

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")