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随机生成指定长度密码的方法
Apr 04 Python
使用httplib模块来制作Python下HTTP客户端的方法
Jun 19 Python
利用Python如何生成hash值示例详解
Dec 20 Python
pandas将DataFrame的列变成行索引的方法
Apr 10 Python
python3.5基于TCP实现文件传输
Mar 20 Python
python机器学习之神经网络实现
Oct 13 Python
Python collections中的双向队列deque简单介绍详解
Nov 04 Python
Python连接Impala实现步骤解析
Aug 04 Python
Python修改DBF文件指定列
Dec 19 Python
解决pytorch 损失函数中输入输出不匹配的问题
Jun 05 Python
Pyqt5将多个类组合在一个界面显示的完整示例
Sep 04 Python
实例详解Python的进程,线程和协程
Mar 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
Linux下ZendOptimizer的安装与配置方法
2007/04/12 PHP
PHP的单引号和双引号 字符串效率
2009/05/27 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
php的array数组和使用实例简明教程(容易理解)
2014/03/20 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
2018/06/04 PHP
用javascript实现的图片马赛克后显示并切换加文字功能
2007/04/21 Javascript
用js判断浏览器是否是IE的比较好的办法
2007/05/08 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
2013/12/24 Javascript
jquery复选框checkbox实现删除前判断
2014/04/20 Javascript
Javascript获取表单名称(name)的方法
2015/04/02 Javascript
javascript实现输出指定行数正方形图案的方法
2015/08/03 Javascript
JavaScript实现算术平方根算法-代码超简单
2015/09/11 Javascript
JS日期加减,日期运算代码
2015/11/05 Javascript
浅谈JavaScript中小数和大整数的精度丢失
2016/05/31 Javascript
微信小程序 出现47001 data format error原因解决办法
2017/03/10 Javascript
单行 JS 实现移动端金钱格式的输入规则
2017/05/22 Javascript
微信小程序中this.data与this.setData的区别详解
2018/09/17 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
2019/04/24 Javascript
vue中的过滤器实例代码详解
2019/06/06 Javascript
JS 自执行函数原理及用法
2019/08/05 Javascript
详解element-ui表格中勾选checkbox,高亮当前行
2019/09/02 Javascript
Python ljust rjust center输出
2008/09/06 Python
实例探究Python以并发方式编写高性能端口扫描器的方法
2016/06/14 Python
Django中使用Celery的方法示例
2018/11/29 Python
pandas DataFrame 交集并集补集的实现
2019/06/24 Python
通过cmd进入python的实例操作
2019/06/26 Python
解决Pycharm后台indexing导致不能run的问题
2019/06/27 Python
Ubuntu配置Pytorch on Graph (PoG)环境过程图解
2020/11/19 Python
Notino意大利:购买香水和化妆品
2018/11/14 全球购物
超级英雄、电影和电视、乐队和音乐T恤:Loud Clothing
2019/09/01 全球购物
物业管理员岗位职责范文
2013/11/25 职场文书
交通事故检查书范文
2014/01/30 职场文书
七年级作文之关于奶奶
2019/10/29 职场文书
Nginx如何配置Http、Https、WS、WSS的方法步骤
2021/05/11 Servers
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers