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操作Word批量生成文章的方法
Jul 28 Python
Python操作Excel之xlsx文件
Mar 24 Python
python实现决策树分类算法
Dec 21 Python
python机器学习案例教程——K最近邻算法的实现
Dec 28 Python
对pandas的算术运算和数据对齐实例详解
Dec 22 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
Aug 05 Python
python时间日期操作方法实例小结
Feb 06 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
Mar 24 Python
Python PyQt5运行程序把输出信息展示到GUI图形界面上
Apr 27 Python
python读取hdfs上的parquet文件方式
Jun 06 Python
如何对python的字典进行排序
Jun 19 Python
Python中time标准库的使用教程
Apr 13 Python
opencv用VS2013调试时用Image Watch插件查看图片
基于python定位棋子位置及识别棋子颜色
Python 处理表格进行成绩排序的操作代码
python识别围棋定位棋盘位置
python之基数排序的实现
Jul 26 #Python
python之PySide2安装使用及QT Designer UI设计案例教程
python代码实现备忘录案例讲解
Jul 26 #Python
You might like
在线竞拍系统的PHP实现框架(二)
2006/10/09 PHP
php ios推送(代码)
2013/07/01 PHP
php中如何防止表单的重复提交
2013/08/02 PHP
PHP实现的英文名字全拼随机排号脚本
2014/07/04 PHP
浅析php创建者模式
2014/11/25 PHP
windows环境下使用Composer安装ThinkPHP5
2018/05/18 PHP
再谈javascript图片预加载技术(详细演示)
2011/03/12 Javascript
JS仿flash上传头像效果实现代码
2011/07/18 Javascript
JavaScript学习笔记之JS对象
2015/01/22 Javascript
JS+CSS实现简易实用的滑动门菜单效果
2015/09/18 Javascript
NodeJS连接MongoDB数据库时报错的快速解决方法
2016/05/13 NodeJs
浅谈js内置对象Math的属性和方法(推荐)
2016/09/19 Javascript
vue.js中$watch的用法示例
2016/10/04 Javascript
react-router4 嵌套路由的使用方法
2017/07/24 Javascript
ES6新特性:使用export和import实现模块化详解
2017/07/31 Javascript
解决ionic和angular上拉加载的问题
2017/08/03 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
webpack+vue-cli项目中引入外部非模块格式js的方法
2018/09/28 Javascript
VUE+node(express)实现前后端分离
2019/10/13 Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
2020/03/10 Javascript
[50:48]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
使用Python脚本将绝对url替换为相对url的教程
2015/04/24 Python
Python requests模块实例用法
2019/02/11 Python
python3利用Socket实现通信的方法示例
2019/05/06 Python
python中删除某个元素的方法解析
2019/11/05 Python
python3 实现调用串口功能
2019/12/26 Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
2021/01/01 Python
求职信格式范本
2013/11/15 职场文书
保险经纪人求职信
2014/03/11 职场文书
《神奇的克隆》教学反思
2014/04/10 职场文书
小学班长竞选演讲稿
2014/04/24 职场文书
师范生见习报告范文
2014/11/03 职场文书
党的群众路线教育实践活动学习笔记范文
2014/11/06 职场文书
客房部经理岗位职责
2015/02/02 职场文书
求职自荐信范文(优秀篇)
2015/03/27 职场文书
经典哲理警句:志不真则心不热,心不热则功不贤
2019/11/14 职场文书