这是机器未来的第8篇文章
1. 元组概述
元组本质上是只读的列表list。除了不能修改之外,其它特性和列表相似
列表是容器数据类型,可存储多个元素,且支持不同类型数据,可修改,有序列表,可重复。
举例:
x = (1, 'abc', True, {"name":"Joe"}, 1, 2, ['7', '89'])
x
(1, 'abc', True, {'name': 'Joe'}, 1, 2, ['7', '89'])
例子中展现了以下情况:
- 不同的数据类型共存一个元组的情况:有数值类型、字符串、有列表、字典
- 元组包含其他容器类型:字典{“name”:“Joe”}和列表[‘7’, ‘89’]
- 元组展现了重复的数据,列表中存在2个1
2. 定义元组
定义元组的方法有2种,tuple函数和()元组运算符
2.1 tuple函数
首先看一下tuple()函数的描述:从输出的描述信息中可知,tuple仅支持1个参数:
- 可为空,为空时则创建一个空列表
x1 = tuple()
print(x1, type(x1))
() <class 'tuple'>
不为空时,参数必须是可迭代类型
- 什么是可迭代对象呢?举个简单的例子,能够在for循环中遍历使用的都是可迭代类型,具体的可迭类型有字符串、列表、元组、字典。
x0 = tuple() # 无参数,空元组
print(x0, type(x0))
x1 = tuple("name") # 用字符串初始化元组
print(x1, type(x1))
x2 = tuple([1, 2, 'a', 'b', 'c']) # 用列表初始化元组
print(x2, type(x2))
x3 = tuple((1, 2, 3, 4)) # 用元组初始化元组
print(x3, type(x3))
d1 = {"name":"zsm", "age":18, "sex":"male"}
x4 = tuple(d1.keys()) # 用字典初始化元组:对于key和value需要分别处理
x5 = tuple(d1.values())
print(x4, type(x4), x5, type(x5))
2.2 ()元组运算符
x1 = () # 空元组
print(x1, type(x1))
x2 = (1, 2, 3, 4) # 有元素的元组
print(x2, type(x2))
3. 元组的不可修改性
元组为不可变数据类型,和字符串一样,存储于内存的堆区,是直接引用类型。举例:
x2 = (1, 2, 3, 4) # 有元素的元组
print(x2, type(x2))
x2[2] = 7
特殊情况:元组中的元素如果是可变数据类型,那么可变数据变量中的元素是可以被修改的,其本质上符合可变数据类型可修改的逻辑。
举例:
x3 = (1, 2, 3, [5, 6, 7], (8, 9, 10))
x3[3] = 5 # 修改元组中的元素x3[3], 元组是不可变数据类型,元组中的元素不可以被修改
x3[3][0] = 20 # 元组中的元素是可变数据类型列表,修改列表中的元组是可行的
x3
x3[4][0] = 22 # 元组中的元素为元组类型时,同样时不可变数据类型,元组中的元素修改也会报错。
x3
4. 元组常用方法
x = (1, 2, 3, [5, 6, 7], (8, 9, 10))
dir(x)
['add',</br> 'class',</br> 'contains',</br> 'delattr',</br> 'dir',</br> 'doc',</br> 'eq',</br> 'format',</br> 'ge',</br> 'getattribute',</br> 'getitem',</br> 'getnewargs',</br> 'gt',</br> 'hash',</br> 'init',</br> 'init_subclass',</br> 'iter',</br> 'le',</br> 'len',</br> 'lt',</br> 'mul',</br> 'ne',</br> 'new',</br> 'reduce',</br> 'reduce_ex',</br> 'repr',</br> 'rmul',</br> 'setattr',</br> 'sizeof',</br> 'str',</br> 'subclasshook',</br> 'count',</br> 'index']
和列表list相对,方法少了很多,仅剩下count和index了。
4.1 count方法
统计元素在元素中的个数
x = (1, 'abc', True, {"name":"Joe"}, 1, 2, ['7', '89']) # 注意:True也被认为是1
x.count(1)
4.2 index方法
返回元组中元素第一次出现的索引位置
x = (1, 'abc', True, {"name":"Joe"}, 1, 2, ['7', '89']) # 2所在位置索引为5
x.index(2)
以上就是python列表的基础语法知识,更加深入的用法会在人工智能的学习过程中学到!
扩展:如果真的需要修改元组,有什么办法呢?
请关注下一节:序列。
《Python零基础快速入门系列》快速导航:
- Python零基础快速入门系列(1) 人工智能序章:开发环境搭建Anaconda+VsCode+JupyterNotebook(零基础启动)
- Python零基础快速入门系列(2)一文快速掌握Python基础语法
- Python零基础快速入门系列(3)AI数据容器底层核心之Python列表
- Python零基础快速入门系列(4)python存储机制:浅拷贝与深拷贝
- Python零基础快速入门系列(5)Python只读数据容器之元组
推荐阅读:
- 物体检测快速入门系列(1)-Windows部署GPU深度学习开发环境
- 物体检测快速入门系列(2)-Windows部署Docker GPU深度学习开发环境
- 物体检测快速入门系列(3)-TensorFlow 2.x Object Detection API快速安装手册
- 物体检测快速入门系列(4)-基于Tensorflow2.x Object Detection API构建自定义物体检测器