TypeError: list indices must be integers or slices, not list

TypeError: list indices must be integers or slices, not list

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

这是一个典型的错误。 i 在你的例子中已经是 array 中的一个元素(即另一个列表), 不是 array 的索引( 不是 一个 int), 所以

if Volume == i[2]:
    counter += 1

您可以查看Python tutorial。另外,尝试这样做:

for i in array:
    print (i)

看看你得到了什么!

我还建议坚持命名约定:变量通常是小写的(volume,而不是 Volume)。在这种情况下 i 具有误导性。 rowelem 会更合适。

此外,由于这可能经常发生,请注意您不能访问列表的切片(但可以访问数组):

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

希望对您有所帮助。 我什至碰巧我必须转换为浮点数组,否则对象将保持错误类型。