IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python学习笔记:09 容器型数据类型------元组 -> 正文阅读

[Python知识库]Python学习笔记:09 容器型数据类型------元组

09 容器型数据类型------元组

认识元组

  1. 元组(tuple)
  • 元组是容器型数据类型,将()作为容器的标志,里面多个元素用逗号隔开:(元素1,元素2,元素3,…)
  • 元组不可变(不支持增删改操作)
  • 元组有序(支持下标操作)

注意:可以把元组看成不可变的列表。列表中除了元素的增删改外,其他的操作元组几乎都适用

  1. 只有一个元素的元组

()表示空的元组,但是因为()本身的特殊性导致如果一个元组只有一个元素,必须在这个唯一的元素后面添加逗号:(元素, )

定义和使用元组

定义元组通常使用()字面量语法,元组类型支持的运算符跟列表是一样的。

"""
example01 - 元组
元组是不可变的
Author: yucui
Date: 2021/7/27
"""
fruit = ('apple',)       # 一元组必须在这个元素之后添加','
fruits = ('apple', 'bananas', 'grape', 'watermelon')    # 四元组

# 重复运算
print(fruits * 2)
print(fruits)

# 成员运算
print('apple' in fruits)         # True
print('grape' not in fruits)     # False

# 合并运算
fruits2 = ('litchi', 'strawberry')
fruits3 = fruits + fruits2
print(fruits3)
fruits += ('pear',)
print(fruits)

# 索引和切片
print(fruits3[3])
print(fruits3[-1])
print(fruits3[1:4])
print(fruits[::-1])
print(fruits3[1:4:2])

# 获取元素的下标
print(fruits3.index('watermelon'))     # 3
# 获取元素重复次数
print(fruits3.count('apple'))          # 1

元组的应用场景

例1:打包和解包操作

当我们把多个用逗号分隔的值赋给一个变量时,多个值会打包成一个元组类型;当我们把一个元组赋值给多个变量时,元组会解包成多个值然后分别赋给对应的变量,如下面的代码所示。

# 打包
a = 1, 10, 100
print(type(a), a)    # <class 'tuple'> (1, 10, 100)
# 解包
i, j, k = a
print(i, j, k)       # 1 10 100

在解包时,如果解包出来的元素个数和变量个数不对应,会引发ValueError异常,错误信息为:too many values to unpack(解包的值太多)或not enough values to unpack(解包的值不足)。

a = 1, 10, 100, 1000
# i, j, k = a             # ValueError: too many values to unpack (expected 3)
# i, j, k, l, m, n = a    # ValueError: not enough values to unpack (expected 6, got 4)

有一种解决变量个数少于元素的个数方法,就是使用星号表达式,我们之前讲函数的可变参数时使用过星号表达式。有了星号表达式,我们就可以让一个变量接收多个值,代码如下所示。需要注意的是,用星号表达式修饰的变量会变成一个列表,列表中有0个或多个元素。还有在解包语法中,星号表达式只能出现一次。

"""
example02 - 元组的应用
Author: yucui
Date: 2021/7/27
"""

a, b, *c = 5, 10, 15, 20, 25
print(a)       # 5
print(b)       # 10
print(c)       # [15, 20, 25]

a, *b, c = 5, 10, 15, 20, 25
print(a)       # 5
print(b)       # [10, 15, 20]
print(c)       #25

*a, b, c = 5, 10, 15, 20, 25
print(a)       # [5, 10, 15]
print(b)       # 20
print(c)       # 25


# ROT_TWO
a, b = b, a
print(a)
print(b)
# ROT_THREE
a, b, c = b, c, a

需要说明一点,解包语法对所有的序列都成立,这就意味着对字符串、列表以及我们之前讲到的range函数返回的范围序列都可以使用解包语法。

例2:交换两个变量的值

交换两个变量的值是编程语言中的一个经典案例,在很多编程语言中,交换两个变量的值都需要借助一个中间变量才能做到,如果不用中间变量就需要使用比较晦涩的位运算来实现。在Python中,交换两个变量ab的值只需要使用如下所示的代码。

# ROT_TWO
a, b = b, a

同理,交换三个变量的值用以下代码:

# ROT_THREE
a, b, c = b, c, a

需要说明的是,上面并没有用到打包和解包语法,Python的字节码指令中有ROT_TWOROT_THREE这样的指令可以实现这个操作,效率是非常高的。但是如果有多于三个变量的值要依次互换,这个时候没有直接可用的字节码指令,执行的原理就是我们上面讲解的打包和解包操作。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-29 23:25:56  更:2021-07-29 23:26:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/25 15:01:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计