TypeError:列表索引必须是整数或切片,而不是列表

Posted

技术标签:

【中文标题】TypeError:列表索引必须是整数或切片,而不是列表【英文标题】:TypeError: list indices must be integers or slices, not list 【发布时间】:2016-09-16 17:08:35 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

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

for i in array:
    print (i)

看看你会得到什么!

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

fplandes,我也有同样的问题,我的代码有一段时间可以工作,我对其他函数做了一些改动,现在它抛出了 TypeError。 lamb_func = lambda x,f,v: [x['data']['q']['57']['dt'], x['data']['q']['57']['meta'][f][v]['s']] 我传递了一个x(字典)、f(字符串)和v(字符串)参数。不修改lamb_func返回结果如何解决?

以上是关于TypeError:列表索引必须是整数或切片,而不是列表的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:列表索引必须是整数或切片,而不是 str

TypeError:列表索引必须是整数或切片,而不是尝试制作二维列表时的元组

Python:无法替换列表中的项目,原因是:TypeError:列表索引必须是整数或切片,而不是 str

在调用列表中的字典中的值时收到“TypeError:列表索引必须是整数或切片,而不是字典”

TypeError:列表索引必须是整数或切片,而不是解析json请求时的str

Spyder-TypeError中的双向重复测量ANOVA:列表索引必须是整数或切片,而不是numpy.float64