TypeError:list indices必须是整数或切片,而不是list

Mic*_*ael 9 list equivalent indices python-3.x

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
Run Code Online (Sandbox Code Playgroud)

Pio*_*iek 11

这是一个经典的错误.i你的情况是已经从一个元素array(即另一个列表),没有的索引array(不是一个int),所以

if Volume == i[2]:
    counter += 1
Run Code Online (Sandbox Code Playgroud)

请确保至少在Python教程的开头部分,因为这是非常简单和基本的东西.

另外我建议坚持命名约定:变量通常是小写的(volume不是Volume).在这种情况下i会产生误导.row或者elem会更合适.


Fra*_*des 6

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

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
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助。我什至碰巧不得不转换为浮点数组,否则对象将保持错误的类型。