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实现k均值算法示例(k均值聚类算法)
Mar 16 Python
Python中实现两个字典(dict)合并的方法
Sep 23 Python
用Python实现一个简单的能够上传下载的HTTP服务器
May 05 Python
python 打印出所有的对象/模块的属性(实例代码)
Sep 11 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
Sep 12 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
Apr 20 Python
python 统计列表中不同元素的数量方法
Jun 29 Python
在macOS上搭建python环境的实现方法
Aug 13 Python
Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法
Jul 21 Python
基于python定位棋子位置及识别棋子颜色
Jul 26 Python
Python实现打乒乓小游戏
Sep 25 Python
如何Python使用re模块实现okenizer
Apr 30 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 str_replace的替换漏洞
2008/03/15 PHP
php结合js实现点击超链接执行删除确认操作
2014/10/31 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
2017/04/10 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
2017/06/29 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
laravel-admin 中列表筛选方法
2019/10/03 PHP
基于jquery的点击链接插入链接内容的代码
2012/07/31 Javascript
node.js中的fs.exists方法使用说明
2014/12/17 Javascript
JavaScript实现常用二级省市级联下拉列表的方法
2015/03/25 Javascript
JavaScript学习总结之JS、AJAX应用
2016/01/29 Javascript
CSS3 media queries结合jQuery实现响应式导航
2016/09/30 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
Angular下H5上传图片的方法(可多张上传)
2017/01/09 Javascript
JS正则表达式验证中文字符
2017/05/08 Javascript
浅谈sass在vue注意的地方
2017/08/10 Javascript
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
nuxt中使用路由守卫的方法步骤
2019/01/27 Javascript
Vue 实现显示/隐藏层的思路(加全局点击事件)
2019/12/31 Javascript
jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例
2020/06/02 jQuery
微信小程序抽奖组件的使用步骤
2021/01/11 Javascript
[37:35]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第二局
2016/02/25 DOTA
[01:01:35]Optic vs paiN 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python中zip()函数用法实例教程
2014/07/31 Python
浅谈MySQL中的触发器
2015/05/05 Python
深入理解Python中的内置常量
2017/05/20 Python
socket + select 完成伪并发操作的实例
2017/08/15 Python
python实现验证码识别功能
2018/06/07 Python
详解如何用TensorFlow训练和识别/分类自定义图片
2019/08/05 Python
python 公共方法汇总解析
2019/09/16 Python
通过实例解析Python return运行原理
2020/03/04 Python
英国在线泳装店:Simply Swim
2019/05/05 全球购物
HSRP的含义以及如何工作
2014/09/10 面试题
电气工程及其自动化专业毕业生自荐信
2014/06/21 职场文书
2016三严三实专题教育活动心得体会
2016/01/06 职场文书
python脚本框架webpy模板赋值实现
2021/11/20 Python