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将xml和xsl转换为html的方法
Mar 10 Python
python返回昨天日期的方法
May 13 Python
python使用邻接矩阵构造图代码示例
Nov 10 Python
Python网络编程之TCP与UDP协议套接字用法示例
Feb 02 Python
pandas series序列转化为星期几的实例
Apr 11 Python
Python代码块批量添加Tab缩进的方法
Jun 25 Python
pandas DataFrame创建方法的方式
Aug 02 Python
python turtle 绘制太极图的实例
Dec 18 Python
windows上彻底删除jupyter notebook的实现
Apr 13 Python
PyCharm2020.1.1与Python3.7.7的安装教程图文详解
Aug 07 Python
Python如何实现Paramiko的二次封装
Jan 30 Python
python引入其他文件夹下的py文件具体方法
May 23 Python
opencv用VS2013调试时用Image Watch插件查看图片
基于python定位棋子位置及识别棋子颜色
Python 处理表格进行成绩排序的操作代码
python识别围棋定位棋盘位置
python之基数排序的实现
Jul 26 #Python
python之PySide2安装使用及QT Designer UI设计案例教程
python代码实现备忘录案例讲解
Jul 26 #Python
You might like
win10环境PHP 7 安装配置【教程】
2016/05/09 PHP
JavaScript 组件之旅(二)编码实现和算法
2009/10/28 Javascript
javascript 子窗体父窗体相互传值方法
2010/05/31 Javascript
js封装的textarea操作方法集合(兼容很好)
2010/11/16 Javascript
深入理解JavaScript系列(12) 变量对象(Variable Object)
2012/01/16 Javascript
bootstrap布局中input输入框右侧图标点击功能
2016/05/16 Javascript
flag和jq on 的绑定多个对象和方法(必看)
2017/02/27 Javascript
Bootstrap模态框案例解析
2017/03/05 Javascript
jQuery中Chosen三级联动功能实例代码
2017/03/07 Javascript
JavaScript实现的冒泡排序法及统计相邻数交换次数示例
2017/04/26 Javascript
详解vue嵌套路由-query传递参数
2017/05/23 Javascript
bootstrap动态添加面包屑(breadcrumb)及其响应事件的方法
2017/05/25 Javascript
Vue中Quill富文本编辑器的使用教程
2018/09/21 Javascript
微信小程序页面渲染实现方法
2019/11/06 Javascript
javascript设计模式 ? 命令模式原理与用法实例分析
2020/04/20 Javascript
vue实现淘宝购物车功能
2020/04/20 Javascript
解决vux 中popup 组件Mask 遮罩在最上层的问题
2020/11/03 Javascript
javascript实现点击小图显示大图
2020/11/29 Javascript
Python实现在Linux系统下更改当前进程运行用户
2015/02/04 Python
python各种语言间时间的转化实现代码
2016/03/23 Python
Python实现的企业粉丝抽奖功能示例
2019/07/26 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
Python类class参数self原理解析
2020/11/19 Python
关于box-sizing的全面理解
2016/07/28 HTML / CSS
美国最大的存储市场:SpareFoot
2018/07/23 全球购物
下面关于"联合"的题目的输出是什么
2013/08/06 面试题
员工工作表扬信范文
2014/01/13 职场文书
信访工作经验交流材料
2014/05/23 职场文书
社区关爱留守儿童活动方案
2014/08/22 职场文书
自动化专业大学生职业生涯规划范文:爱拚才会赢
2014/09/12 职场文书
人身损害赔偿协议书范本
2014/09/27 职场文书
违反交通安全法检讨书
2014/10/24 职场文书
水电工岗位职责
2015/02/14 职场文书
2016年毕业实习心得体会范文
2015/10/09 职场文书
Golang二维切片初始化的实现
2021/04/08 Golang
CSS list-style-type属性使用方法
2023/05/21 HTML / CSS