【问题标题】:TypeError: list indices must be integers or slices, not listTypeError:列表索引必须是整数或切片,而不是列表
【发布时间】: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

【问题讨论】:

    标签: list python-3.x indices equivalent


    【解决方案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返回结果如何解决?
      猜你喜欢
      • 1970-01-01
      • 2019-07-04
      • 2015-12-09
      • 2021-11-28
      • 2020-09-23
      • 2020-09-04
      • 2019-10-01
      相关资源
      最近更新 更多