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)