Python基础数据类型tuple元组的概念与用法


Posted in Python onAugust 02, 2021

元组简单介绍

元组是一个和列表和相似的数据类型,也是一个有序序列

两者拥有着基本相同的特性,但是也有很多不同的地方 

声明元组

var = (1, 2, 3)
var = ("1", "2", "3")
var = (True, False)
var = (1.1, 1.11, 1.111)
var = ((1,), (2, 3), (4, 5))
var = ([1, 2], {"name": "polo"})

元组与列表的区别

元组与列表很相似,都是有序的只读序列,两者有相同的方法和操作运算,区别在于:

列表创建后,可以进行修改

元组创建后,不能进行修改

lis = [1, 2, 3]
lis[0] = 111
print(lis)

tupl = (1, 2, 3)
tupl[0] = 2


# 输出结果
Traceback (most recent call last):
  File "/Users/polo/Documents/pylearn/第一章:python 基本类型/6_tuple元组.py", line 21, in <module>
    tupl[0] = 2
TypeError: 'tuple' object does not support item assignment

究极原因在于

列表是可变对象,而元组是不可变对象,具体详解可以参考

https://3water.com/article/0MTM3aNjkwfLmE2

特殊的元组

如果一个元组没有包含任何元素,使用 () 表示一个空元组

# 空
tup = ()
print(tup, type(tup))


# 输出结果
() <class 'tuple'>

如果一个元组只包含一个元素,要怎么表示?

# 只包含一个元素
tup = (1)
print(tup, type(tup))


# 输出结果
1 <class 'int'>

哎!竟然是 1,好像是哦,( ) 就是数学运算常见的括号呀,那到底要怎么表示呢

正确表示元组只包含一个元素

# 正确
tup = (1,)
print(tup, type(tup))


# 输出结果
(1,) <class 'tuple'>

需要在元素后加一个逗号,使用 (item, ) 表示该元组

总结

(123, ) 表示的是一个元组,元组中包含一个整数 123

(123) 表示的是一个带括号的表达式,整数 123 嵌入括号中 

元组的简写

当元组在 = 右边的时候,可以省略括号

# 等价写法
a = 1, 2
print(a, type(a))
a = (3, 4)
print(a, type(a))

a = 1,
print(a, type(a))
a = (3,)
print(a, type(a))


# 输出结果
(1, 2) <class 'tuple'>
(3, 4) <class 'tuple'>
(1,) <class 'tuple'>
(3,) <class 'tuple'>

元组常见运算操作

索引 [ ] 取值

# 索引
tup = [1, 2, 3, 4, 5]
print(tup[0])
print(tup[-1])
print(tup[2])


# 输出结果
1
5
3

切片 [ : : ] 取值

和列表一样,元组也可以切片

使用语法:元组[start : end : step],获取元组中在 [start, end) 范围的子元组

注意范围 [start, end) 包含 start,不包含 end

step 是步长,设为 n,则每隔 n 个元素获取一次

# 切片
tup = [1, 2, 3, 4, 5, 6, 7, 8]
print(tup[:])  # 取全部元素
print(tup[0:])  # 取全部元素
print(tup[2:5])  # 取第 3 个元素到第 5 个元素
print(tup[::-1])  # 倒序取所有元素
print(tup[-3:-1])  # 取倒数第 3 个元素到倒数第 2 个元素


# 输出结果
[1, 2, 3, 4, 5, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8]
[3, 4, 5]
[8, 7, 6, 5, 4, 3, 2, 1]
[6, 7]

运算符 +

使用运算符 + 连接多个元组

# +
tup1 = (1,)
tup2 = (2, 3)
print(tup1 + tup2)


# 输出结果
(1, 2, 3)

运算符 *

使用运算符 * 将元组的元素重复

# *
tup = (1, 2)
print(tup * 2)


# 输出结果
(1, 2, 1, 2)

关键字 in

通过关键字 in 检查列表中是否包含指定元素,返回 bool 值

not in 则是取反

# in
tup = (1, 2, 3)
print(1 in tup)
print(22 not in tup)


# 输出结果
True
True

常见函数

len(元组) 函数

# len
tup = (1, 2, 3)
print(len(tup))


# 输出结果
3

max(元组) 函数

# max
tup = (1, 2, 3)
print(max(tup))


# 输出结果
3

min(元组) 函数

# min
tup = (1, 2, 3)
print(min(tup))


# 输出结果
1

元组常见方法

元组与列表很相似,两者都表示一个有序的序列,它们的区别在于:

  • 列表创建后,可以进行修改
  • 元组创建后,不能进行修改

这点在可变对象、不可变对象文章都写了

index(item)

在元组中查找指定元素 item

如果找到元素 item,则返回元素 item 的索引

如果找不到,则抛出异常

# index
tup = (1, 2, 3)
print(tup.index(1))
print(tup.index(11))


# 输出结果
0
Traceback (most recent call last):
  File "/Users/Documents/pylearn/第一章:python 基本类型/6_tuple元组.py", line 88, in <module>
    print(tup.index(11))
ValueError: tuple.index(x): x not in tuple

count(value)

返回元素 value 在元组中出现的次数

# count
tup = (1, 2, 1)
print(tup.count(1))
print(tup.count(11))


# 输出结果
2
0

元组总结

因为元组是不可变对象,所以元组一般适合用来存储不变的数据

到此这篇关于Python基础数据类型tuple元组的概念与用法的文章就介绍到这了,更多相关Python数据类型tuple元组内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现扫描指定目录下的子目录及文件的方法
Jul 16 Python
Python实现把xml或xsl转换为html格式
Apr 08 Python
python下paramiko模块实现ssh连接登录Linux服务器
Jun 03 Python
python使用opencv进行人脸识别
Apr 07 Python
Python和C/C++交互的几种方法总结
May 11 Python
Python 在字符串中加入变量的实例讲解
May 02 Python
python使用turtle库与random库绘制雪花
Jun 22 Python
Python实现将Excel转换成xml的方法示例
Aug 25 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
Jun 19 Python
用Python徒手撸一个股票回测框架搭建【推荐】
Aug 05 Python
Python中读取文件名中的数字的实例详解
Dec 25 Python
Python解析m3u8拼接下载mp4视频文件的示例代码
Mar 03 Python
opencv用VS2013调试时用Image Watch插件查看图片
基于python定位棋子位置及识别棋子颜色
Python 处理表格进行成绩排序的操作代码
python识别围棋定位棋盘位置
python之基数排序的实现
Jul 26 #Python
python之PySide2安装使用及QT Designer UI设计案例教程
python代码实现备忘录案例讲解
Jul 26 #Python
You might like
锁定年轻人的双倍活力 星巴克推出星倍醇即饮浓咖啡
2021/03/03 咖啡文化
PHP获取浏览器信息类和客户端地理位置的2个方法
2014/04/24 PHP
ThinkPHP中的系统常量和预定义常量集合
2014/07/01 PHP
php 无限级分类 获取顶级分类ID
2016/03/13 PHP
laravel框架使用极光推送消息操作示例
2020/02/15 PHP
javascript sudoku 数独智力游戏生成代码
2010/03/27 Javascript
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
2011/01/11 Javascript
DWZ刷新dialog解决方法
2013/03/03 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
2016/08/03 Javascript
全面解析node 表单的图片上传
2016/11/21 Javascript
微信小程序 扎金花简单实例
2017/02/21 Javascript
Vue2 使用 Echarts 创建图表实例代码
2017/05/18 Javascript
react-router实现跳转传值的方法示例
2017/05/27 Javascript
jQuery 实现左右两侧菜单添加、移除功能
2018/01/02 jQuery
vue axios基于常见业务场景的二次封装的实现
2018/09/21 Javascript
js 动态校验开始结束时间的实现代码
2020/05/25 Javascript
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
python 多线程实现检测服务器在线情况
2015/11/25 Python
Python 模拟登陆的两种实现方法
2017/08/10 Python
Python实现手写一个类似django的web框架示例
2018/07/20 Python
python调用opencv实现猫脸检测功能
2019/01/15 Python
Python查找不限层级Json数据中某个key或者value的路径方式
2020/02/27 Python
Python 利用OpenCV给照片换底色的示例代码
2020/08/03 Python
python 基于UDP协议套接字通信的实现
2021/01/22 Python
css3过渡_动力节点Java学院整理
2017/07/11 HTML / CSS
HTMl5的存储方式sessionStorage和localStorage详解
2014/03/18 HTML / CSS
HTML5未来发展趋势
2016/02/01 HTML / CSS
SmartBuyGlasses德国:购买太阳镜和眼镜
2019/08/20 全球购物
酷瑞网络科技面试题
2012/03/30 面试题
Ruby如何定义一个类
2012/10/08 面试题
英语自荐信范文
2013/12/11 职场文书
成品仓管员工作职责
2013/12/29 职场文书
校庆筹备方案
2014/03/30 职场文书
2015年社区计生工作总结
2015/04/21 职场文书
js实现模拟购物商城案例
2021/05/18 Javascript
Python中递归以及递归遍历目录详解
2021/10/24 Python