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

时间:2016-05-19 16:58:15

标签: list python-3.x indices equivalent

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

2 个答案:

答案 0 :(得分:10)

这是一个经典的错误。在您的情况下,i已经是来自array的元素(即另一个列表),不是索引array不是 int),所以

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

请确保至少在Python tutorial的开头,因为这是非常简单和基本的东西。

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

答案 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数组,否则对象将保持错误的类型。