列表取片操作易错点(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)

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值