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
具有误导性。 row
或 elem
会更合适。
【讨论】:
【参考方案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:列表索引必须是整数或切片,而不是字典”