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程序设计入门(2)变量类型简介
Jun 16 Python
玩转python爬虫之爬取糗事百科段子
Feb 17 Python
Python设计模式编程中Adapter适配器模式的使用实例
Mar 02 Python
Python使用内置json模块解析json格式数据的方法
Jul 20 Python
Python异常对代码运行性能的影响实例解析
Feb 08 Python
python多继承(钻石继承)问题和解决方法简单示例
Oct 21 Python
python实现的读取网页并分词功能示例
Oct 29 Python
浅谈Python类中的self到底是干啥的
Nov 11 Python
Python使用sys.exc_info()方法获取异常信息
Jul 23 Python
如何利用python进行时间序列分析
Aug 04 Python
解决pycharm不能自动保存在远程linux中的问题
Feb 06 Python
利用Pycharm连接服务器的全过程记录
Jul 01 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自动适应范围的分页代码
2008/08/05 PHP
PHP 第三节 变量介绍
2012/04/28 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
2017/02/16 PHP
PHP API接口必备之输出json格式数据示例代码
2017/06/27 PHP
jquery 常用操作整理 基础入门篇
2009/10/14 Javascript
jQuery.query.js 取参数的两点问题分析
2012/08/06 Javascript
jquery+css+ul模拟列表菜单具体实现思路
2013/04/15 Javascript
火狐下table中创建form导致两个table之间出现空白
2013/09/02 Javascript
JavaScript中的函数重载深入理解
2014/08/04 Javascript
node.js中的buffer.copy方法使用说明
2014/12/14 Javascript
js实现同一页面可多次调用的图片幻灯切换效果
2015/02/28 Javascript
js获取当前日期时间及其它操作汇总
2015/04/17 Javascript
基于jQuey实现鼠标滑过变色(整行变色)
2015/12/07 Javascript
详解前端自动化工具gulp自动添加版本号
2016/12/20 Javascript
前端开发之CSS原理详解
2017/03/11 Javascript
docker中编译nodejs并使用nginx启动
2017/06/23 NodeJs
JS模拟超市简易收银台小程序代码解析
2017/08/18 Javascript
jQuery实现的简单无刷新评论功能示例
2017/11/08 jQuery
深入浅析Vue中的slots/scoped slots
2018/04/03 Javascript
JS实现Cookie读、写、删除操作工具类示例
2018/08/28 Javascript
javascript实现简易聊天室
2019/07/12 Javascript
Vuex,iView UI面包屑导航使用扩展详解
2019/11/04 Javascript
python使用正则表达式检测密码强度源码分享
2014/06/11 Python
python 画三维图像 曲面图和散点图的示例
2018/12/29 Python
深入了解Django中间件及其方法
2019/07/26 Python
详解Python3 中的字符串格式化语法
2020/01/15 Python
Python接口测试环境搭建过程详解
2020/06/29 Python
Python调用jar包方法实现过程解析
2020/08/11 Python
Python实现Kerberos用户的增删改查操作
2020/12/14 Python
Dune London官网:英国著名奢华鞋履品牌
2017/11/30 全球购物
英国在线花园中心:You Garden
2018/06/03 全球购物
应聘教师推荐信
2013/10/31 职场文书
先进党支部事迹材料
2014/01/13 职场文书
数控技术应用个人求职信范文
2014/02/03 职场文书
男性健康日的活动方案
2014/08/18 职场文书
JDK8中String的intern()方法实例详细解读
2022/09/23 Java/Android