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中死锁的形成示例及死锁情况的防止
Jun 14 Python
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
Feb 08 Python
python 拷贝特定后缀名文件,并保留原始目录结构的实例
Apr 27 Python
python实现判断一个字符串是否是合法IP地址的示例
Jun 04 Python
python3个性签名设计实现代码
Jun 19 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
Jun 26 Python
python的set处理二维数组转一维数组的方法示例
May 31 Python
python实现集中式的病毒扫描功能详解
Jul 09 Python
解决keras加入lambda层时shape的问题
Jun 11 Python
Python JSON常用编解码方法代码实例
Sep 05 Python
总结Pyinstaller的坑及终极解决方法(小结)
Sep 21 Python
Python如何让字典保持有序排列
Apr 29 Python
opencv用VS2013调试时用Image Watch插件查看图片
基于python定位棋子位置及识别棋子颜色
Python 处理表格进行成绩排序的操作代码
python识别围棋定位棋盘位置
python之基数排序的实现
Jul 26 #Python
python之PySide2安装使用及QT Designer UI设计案例教程
python代码实现备忘录案例讲解
Jul 26 #Python
You might like
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
2011/12/19 PHP
高性能PHP框架Symfony2经典入门教程
2014/07/08 PHP
PHP版本如何选择?应该使用哪个版本?
2015/05/13 PHP
PHP常用文件操作函数和简单实例分析
2016/06/03 PHP
Yii中的relations数据关联查询及统计功能用法详解
2016/07/14 PHP
深入浅析Yii admin的权限控制
2016/08/31 PHP
PHPstorm启用自动换行的方法详解(IDE)
2020/09/17 PHP
JavaScript中“+=”的应用
2007/02/02 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
2012/01/15 Javascript
select多选 multiple的使用示例
2014/06/16 Javascript
Javascript动态创建表格及删除行列的方法
2015/05/15 Javascript
angularjs客户端实现压缩图片文件并上传实例
2015/07/06 Javascript
JavaScript编写推箱子游戏
2015/07/07 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
2015/12/11 Javascript
微信小程序搜索组件wxSearch实例详解
2017/06/08 Javascript
nodejs使用async模块同步执行的方法
2019/03/02 NodeJs
深入学习TypeScript 、React、 Redux和Ant-Design的最佳实践
2019/06/17 Javascript
jQuery实现可编辑的表格
2019/12/11 jQuery
React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
2020/01/06 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
2020/04/28 Javascript
[01:30]DOTA2上海特锦赛现场采访 Loda倾情献唱
2016/03/25 DOTA
python正则表达式re模块详细介绍
2014/05/29 Python
详解Python操作RabbitMQ服务器消息队列的远程结果返回
2016/06/30 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
2019/04/01 Python
python队列Queue的详解
2019/05/10 Python
python 轮询执行某函数的2种方式
2020/05/03 Python
CSS3实现div从下往上滑入滑出效果示例
2020/04/28 HTML / CSS
html5关于外链嵌入页面通信问题(postMessage解决跨域通信)
2020/07/20 HTML / CSS
WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回?
2012/02/21 面试题
分公司经理岗位职责
2013/11/11 职场文书
信息技术专业个人自我评价
2013/12/11 职场文书
演讲稿怎么写
2014/01/07 职场文书
个人债务授权委托书范本
2014/10/05 职场文书
见习报告的格式
2014/10/31 职场文书
导游词之上海东方明珠塔
2019/09/25 职场文书
shell进度条追踪指令执行时间的场景分析
2022/06/16 Servers