【Python零基础快速入门系列| 05】一文掌握Python只读数据容器:列表List的兄弟,元组tuple

这是机器未来的第8篇文章

原文首发地址:https://blog.csdn.net/RobotFutures/article/details/125013378

在这里插入图片描述

《Python零基础快速入门系列》快速导航:


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’,
class’,
contains’,
delattr’,
dir’,
doc’,
eq’,
format’,
ge’,
getattribute’,
getitem’,
getnewargs’,
gt’,
hash’,
init’,
init_subclass’,
iter’,
le’,
len’,
lt’,
mul’,
ne’,
new’,
reduce’,
reduce_ex’,
repr’,
rmul’,
setattr’,
sizeof’,
str’,
subclasshook’,
‘count’,
‘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列表的基础语法知识,更加深入的用法会在人工智能的学习过程中学到!

扩展:如果真的需要修改元组,有什么办法呢?

请关注下一节:序列。

推荐阅读:

写在末尾:

  • 博客简介:专注AIoT领域,追逐未来时代的脉搏,记录路途中的技术成长!
  • 专栏简介:本专栏的核心就是:快!快!快!2周快速拿下Python,具备项目开发能力,为机器学习和深度学习做准备。
  • 面向人群:零基础编程爱好者
  • 专栏计划:接下来会逐步发布跨入人工智能的系列博文,敬请期待
    • Python零基础快速入门系列
    • 快速入门Python数据科学系列
    • 人工智能开发环境搭建系列
    • 机器学习系列
    • 物体检测快速入门系列
    • 自动驾驶物体检测系列

  • 12
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 24
    评论
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器未来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值