array =某种列表,包含3列和无限量的行,其中包含数据。
Volume = array[0][2]
counter = 0
for i in array:
if Volume == array[i][2]: #<------ why is this line a problem?
counter += 1
答案 0 :(得分:10)
这是一个经典的错误。在您的情况下,i
已经是来自array
的元素(即另一个列表),不是索引array
(不是 int
),所以
if Volume == i[2]:
counter += 1
请确保至少在Python tutorial的开头,因为这是非常简单和基本的东西。
另外我建议坚持使用命名约定:变量通常是小写的(volume
,而不是Volume
)。在这种情况下,i
会产生误导。 row
或elem
会更合适。
答案 1 :(得分:0)
此外,由于这种情况可能经常发生,请注意,您无法访问列表切片(但可以访问数组):
import numpy as np
integerarray = np.array([33,11,22], dtype=int)
integerlist = [33,11,22]
indexArray = [1,2,0] # or equivalently, an array, e.g. np.argsort(integerlist)
print(integerarray[indexArray]) ## works fine
print(integerlist[indexArray]) ## triggers: TypeError: list indices must be integers or slices, not list
我希望这会有所帮助。 甚至碰巧我不得不转换为float数组,否则对象将保持错误的类型。