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
具有误导性。 row
或 elem
会更合适。
此外,由于这可能经常发生,请注意您不能访问列表的切片(但可以访问数组):
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
希望对您有所帮助。
我什至碰巧我必须转换为浮点数组,否则对象将保持错误类型。
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
具有误导性。 row
或 elem
会更合适。
此外,由于这可能经常发生,请注意您不能访问列表的切片(但可以访问数组):
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
希望对您有所帮助。 我什至碰巧我必须转换为浮点数组,否则对象将保持错误类型。