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