解决列表和元组多索引bug问题(TypeError: list indices must be integers or slices, not tuple)

在对列表和元组进行索引的时候,发现使用多维索引会出现以下bug:

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

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

list:
python 复制代码
list1 = [[1,2,3], [4,5,6]]
m1 = list1[1,0]
tuple:
python 复制代码
tuple1 = ((1,2,3), (4,5,6))
m2 = tuple1[0, 1]

问题原因:这是因为我们经常使用numpy库和torch库,里面的tensor类型和np类型是支持多索引的,而list和tuple不支持。因为list和tuple支持不同类型的数据同存,而numpy是不支持的,所以numpy可以进行多索引。例子如下:

我们使用list来查看里面数据的类型:

python 复制代码
list1 = [[1,2,3], ["test",5,6]]
print (type(list1[1][0]))
print (type(list1[0][0]))

可以看到list可以存储多种不同数据类型的数据。

我们使用numpy来进行测试:

python 复制代码
import numpy as np
np1 = np.array( [[1,2,3], ["test",5,6]])
print (type(np1[1][0]))
print (type(np1[0][0]))

可以看到输出结果如下:

我们可以看到,numpy在创建数组时,会自动的把数据类型统一,方便进行批量处理,即可以使用多索引。tensor也是同理

结论:

1.列表(List)和元组(Tuple)是内置的数据结构,可以包含不同类型的元素,并且长度可以动态改变,主要目的是提供灵活性和易用性。所以不支持多个索引

2.numpy是为了高校的数值计算而设计的,是一个固定大小和同质的多维数组。所以支持多个索引,方便数值计算

4.如果想要使用多个索引,可以把list转换为numpy来进行处理

python 复制代码
np1 = np.array( [[1,2,3], [4,5,6]]) #将list转换为numpy类型

测试不易,点个赞再走吧

相关推荐
调问开源问卷DWSurvey5 小时前
调问更新5.16~5.30:解锁Excel图片上传,修复多项高频体验Bug
bug
胡图图不糊涂^_^7 小时前
测试BUG篇
学习·bug·测试
搬石头的马农13 小时前
从零配置Claude自动修Bug:6步打造全自动开发流程
java·人工智能·python·bug·ai编程
winlife_16 小时前
让 AI 自动跑 PlayMode 回归测试:从 BUG 注入到自动判 FAIL 的完整闭环
人工智能·unity·bug·ai编程·mcp·回归测试·游戏测试
坚果的博客16 小时前
Flutter OHOS SDK 版本目录校验 Bug 修复实战
flutter·bug
加强洁西卡17 小时前
【Bug】解决vscode里ssh连接的虚拟机的codex的侧边栏打开只有logo没有登录或输入框的问题
bug
清水白石00817 小时前
Python 可变对象与不可变对象深度解析:为什么 `tuple` 里可以放 `list`?
开发语言·python·list
不懂的浪漫1 天前
Codex 更新后历史 Session 消失?我写了一个修复官方 Bug 的 Recovery Skill
bug·codex·skill
এ慕ོ冬℘゜2 天前
手写一款高兼容、零BUG图片预览组件|前端
前端·bug
hui函数3 天前
Python系列Bug修复|如何解决 pip install 报错 ModuleNotFoundError: No module named ‘pygame’ 问题
python·bug·pip