解决列表和元组多索引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类型

测试不易,点个赞再走吧

相关推荐

  1. python32-Python列表之通过索引使用元素

    2024-01-10 04:42:02       46 阅读
  2. 笔记:Python 列表(练习题)

    2024-01-10 04:42:02       27 阅读
  3. Elixir学习笔记——列表

    2024-01-10 04:42:02       34 阅读
  4. python34-Python列表之加法

    2024-01-10 04:42:02       53 阅读
  5. Python列表的底层实现

    2024-01-10 04:42:02       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-10 04:42:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-10 04:42:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-10 04:42:02       82 阅读
  4. Python语言-面向对象

    2024-01-10 04:42:02       91 阅读

热门阅读

  1. C++排序算法概览

    2024-01-10 04:42:02       55 阅读
  2. Linux中关于rpm管理包命令详解

    2024-01-10 04:42:02       60 阅读
  3. 组件封装原则

    2024-01-10 04:42:02       50 阅读
  4. Kotlin学习之05

    2024-01-10 04:42:02       46 阅读
  5. uni-app顶部下拉舒心

    2024-01-10 04:42:02       54 阅读
  6. qt QLibraryInfo

    2024-01-10 04:42:02       52 阅读
  7. SQLAlchemy 中的会话(Session)缓存详解

    2024-01-10 04:42:02       50 阅读
  8. 1135. 新年好 (Dijkstra,dfs枚举)

    2024-01-10 04:42:02       55 阅读