解决列表和元组多索引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:
list1 = [[1,2,3], [4,5,6]]
m1 = list1[1,0]

请添加图片描述

tuple:
tuple1 = ((1,2,3), (4,5,6))
m2 = tuple1[0, 1]

在这里插入图片描述

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

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

list1 = [[1,2,3], ["test",5,6]]
print (type(list1[1][0]))
print (type(list1[0][0]))

请添加图片描述
可以看到list可以存储多种不同数据类型的数据。
我们使用numpy来进行测试:

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来进行处理

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

测试不易,点个赞再走吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/326178.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年,Web3技术的“iPhone时刻”会出现吗?

出品|欧科云链研究院 关于2024年的Web3市场,大多数人目前是持乐观态度的。随着宏观政策稳定,美国和香港地区不断释放加密资产现货ETF的利好,叠加铭文热潮及减半周期临近,市场对Web3及加密资产的兴趣正持续上涨。年后的…

mmdetection训练自己的数据集

mmdetection训练自己的数据集 这里写目录标题 mmdetection训练自己的数据集一: 环境搭建二:数据集格式转换(yolo转coco格式)yolo数据集格式coco数据集格式yolo转coco数据集格式yolo转coco数据集格式的代码 三: 训练dataset数据文件配置config…

苹果电脑Markdown写作工具:ulysses mac软件介绍

ulysses for mac是一款Markdown写作工具,支持Markdown拼写检查、语音识别、iCloud同步、版本管理等功能,并且可以导出为 PDF、word、RTF、TXT、Markdown、HTML 和 ePub等文件格式。 ulysses for mac软件介绍 适用于Mac,iPad和iPhone的终极写…

DS|哈希查找

题目一:DS哈希查找 -- 线性探测再散列 题目描述: 定义哈希函数为H(key) key%11,输入表长(大于、等于11)。输入关键字集合,用线性探测再散列构建哈希表,并查找给定关键字。 输入要求&#xf…

Vue2 - 数据响应式原理

目录 1,总览2,Observer3,Dep4,Watcher5,Schedule 1,总览 vue2官网参考 简单介绍下上图流程:以 Data 为中心来说, Vue 会将传递给 Vue 实例的 data 选项(普通 js 对象&a…

DDoS攻击的多种方式

DDOS攻击指分布式拒绝服务攻击,即处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。由于攻击的发出点是分布在不同地方的,这类攻击称为分布式拒绝服务…

C++ OpenGL 3D GameTutorial 1:Making the window with win32 API学习笔记

视频地址https://www.youtube.com/watch?vjHcz22MDPeE&listPLv8DnRaQOs5-MR-zbP1QUdq5FL0FWqVzg 一、入口函数 首先看入口函数main代码&#xff1a; #include<OGL3D/Game/OGame.h>int main() {OGame game;game.Run();return 0; } 这里交代个关于C语法的问题&#x…

C++ queue

目录 一、介绍 二、queue使用 三、模拟实现 四、优先级队列 五、priority_queue使用 OJ题&#xff1a;215. 数组中的第K个最大元素 快速排序 优先级队列 TOPK 六、模拟实现priority_queue 1、仿函数 2、优先级队列类 3、测试函数 一、介绍 1、队列是一种容器适配器…

Educational Codeforces Round 104 (Rated for Div. 2)(VP)(寒假ACM模拟赛2)

VP时间 A.找到最小&#xff0c;计算最小有几个 n-cnt; 1.ac B.结论 模拟会超时 n&1: n/2;相遇A继续走&#xff0c;B跳两格到n/21(n/2-1->n/21) k<n/2就直接输出 n>k>n/2输出k1 模拟一下 1234,12345 !n&1不会改变位置&#xff0c;直接输出k%n n…

ARM工控机Node-red使用教程

嵌入式ARM工控机Node-red安装教程 从前车马很慢书信很远&#xff0c;而现在人们不停探索“科技改变生活”。 智能终端的出现改变了我们的生活方式&#xff0c;钡铼技术嵌入式工控机协助您灵活布建能源管理、大楼自动化、工业自动化、电动车充电站等各种多元性IoT应用&#xff…

(16)微信自动化测试-PC微信多开

上次有位客服兄弟联系我&#xff0c;说他有几个微信号要运维&#xff0c;想在一台PC上面打开多个微信方便工作&#xff0c;不用手工切账号&#xff0c;所以我这里研究了下并提供了程序给他&#xff01; 因为微信默认是不允许一台电脑开多个程序的&#xff0c;使用托管.net中的…

Zernike多项式法生成相位理论推导及图像引导实现原理

目录 引言 波前传感器 ​编辑 关于相位计算问题补充 关于结构图的修正 光束质量评价指标 Zernike多项式 ​编辑Zernike多项式法生成相位 光强分布求波前相位-GS 更快的迭代方法SPGD 基于Zernike模式的SPGD 引言 我们还是先从第一篇文献开始理解展开今天分享的一些重…