由于项目稍后的原因,我有一个要迭代的列表列表。但是,当我尝试以常规的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
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")
enumerate
很好要么
for i,f in enumerate(self.features): print(i)