首页 > 编程学习 > 列表取片操作易错点(list indices must be integers or slices, not tuple原因及解决方法)

list indices must be integers or slices, not tuple原因及解决方法

场景:
在对列表进行取数据时报错,报错代码:

TypeError: list indices must be integers or slices, not tuple

翻译:
列表索引必须是整数(取某一个数据,例如:data[0])或者片(取某一片数据,例如data[0:2]),不能是元组(tuple是元组的意思)

原因:
当我们用data=[]并通过append等方法创建数据时,创建的data是一个list列表,列表中的元素大小可以不一样,比如:

data=["Jack",[0,1],[2,3,4]]
print(data)
print(data[0])
print(data[0:2])

data是一个列表,可以使用data[0]取数据第一个数据,也可以使用data[0:2]取前面两个数据

但若用data[:,1]去取第二列数据,便会报错,因为根本不存在也找不到第二列!!!

即便生成列表的时候,里面元素的大小/长度一样,但也不能这样操作,因为其本质还是列表!不信可以试试,下面这段代码绝对会报错:

data=[[0,1],[2,3],[4,5]]
print(data[:,1])

解决:

使用numpy中的array,将列表转化为标准的数组:

import numpy as np
data=[[0,1],[2,3],[4,5]]
data=np.array(data)
print(data[:,1])

输出结果:

[1 3 5]

以上代码就多加了一句data=np.array(data)

Copyright © 2010-2022 ngui.cc 版权所有 |关于我们| 联系方式| 豫B2-20100000