Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】


Posted in Python onOctober 30, 2019

本文实例讲述了Python元组 tuple的概念与基本操作。分享给大家供大家参考,具体如下:

元组 tuple

元组 tuple的定义

列表属于可变序列,可以任意修改列表中的元素。元组属于不可变序列,不能修改元组中的
元素。因此,元组没有增加元素、修改元素、删除元素相关的方法。
因此,我们只需要学习元组的创建和删除,元组中元素的访问和计数即可。元组支持如
下操作:

  1. 索引访问
  2. 切片操作
  3. 连接操作
  4. 成员关系操作
  5. 比较运算操作
  6. 计数:元组长度 len()、最大值 max()、最小值 min()、求和 sum()等。

元组的创建

  1. 通过()创建元组。小括号可以省略。
a = (10,20,30) 或者 a = 10,20,30

如果元组只有一个元素,则必须后面加逗号。这是因为解释器会把(1)解释为整数 1,(1,)
解释为元组。

>>> a = (1)
>>> type(a)
<class 'int'>
>>> a = (1,) #或者 a = 1,
>>> type(a)
<class 'tuple'>
  1. 通过 tuple()创建元组
    tuple(可迭代的对象)
    例如:
b = tuple() #创建一个空元组对象
b = tuple("abc")
b = tuple(range(3))
b = tuple([2,3,4])

总结:
tuple()可以接收列表、字符串、其他序列类型、迭代器等生成元组。
list()可以接收元组、字符串、其他序列类型、迭代器等生成列表。

元组的元素访问和计数

1. 元组的元素不能修改

>>> a = (20,10,30,9,8)
>>> a[3]=33
Traceback (most recent call last):
File "<pyshell#313>", line 1, in <module>
a[3]=33
TypeError: 'tuple' object does not support item assignment

2. 元组的元素访问和列表一样,只不过返回的仍然是元组对象。

>>> a = (20,10,30,9,8)
>>> a[1]
10
>>> a[1:3]
(10, 30)
>>> a[:4]
(20, 10, 30, 9)

3. 列表关于排序的方法 list.sorted()是修改原列表对象,元组没有该方法。如果要对元组排

序,只能使用内置函数 sorted(tupleObj),并生成新的列表对象。

>>> a = (20,10,30,9,8)
>>> sorted(a)
[8, 9, 10, 20, 30]

zip

zip(列表 1,列表 2,…)将多个列表对应位置的元素组合成为元组,并返回这个 zip 对象。

>>> a = [10,20,30]
>>> b = [40,50,60]
>>> c = [70,80,90]
>>> d = zip(a,b,c)
>>> list(d)
[(10, 40, 70), (20, 50, 80), (30, 60, 90)]

生成器推导式创建元组

从形式上看,生成器推导式与列表推导式类似,只是生成器推导式使用小括号。列表推
导式直接生成列表对象,生成器推导式生成的不是列表也不是元组,而是一个生成器对象。
我们可以通过生成器对象,转化成列表或者元组。也可以使用生成器对象的__next__()
方法进行遍历,或者直接作为迭代器对象来使用。不管什么方式使用,元素访问结束后,如
果需要重新访问其中的元素,必须重新创建该生成器对象。
【操作】生成器的使用测试

>>> s = (x*2 for x in range(5))
>>> s
<generator object <genexpr> at 0x0000000002BDEB48>
>>> tuple(s)
(0, 2, 4, 6, 8)
>>> list(s) #只能访问一次元素。第二次就为空了。需要再生成一次
[]
>>> s
<generator object <genexpr> at 0x0000000002BDEB48>
>>> tuple(s)
()
>>> s = (x*2 for x in range(5))
>>> s.__next__()
0
>>> s.__next__()
2
>>> s.__next__()
4

元组总结

  1. 元组的核心特点是:不可变序列。
  2. 元组的访问和处理速度比列表快。
  3. 与整数和字符串一样,元组可以作为字典的键,列表则永远不能作为字典的键使用。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
pytorch构建网络模型的4种方法
Apr 13 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
Jun 25 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
Aug 07 Python
python利用tkinter实现屏保
Jul 30 Python
使用Windows批处理和WMI设置Python的环境变量方法
Aug 14 Python
django认证系统实现自定义权限管理的方法
Aug 28 Python
python+selenium 脚本实现每天自动登记的思路详解
Mar 11 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
Mar 31 Python
解决python3输入的坑——input()
Dec 05 Python
python 实现逻辑回归
Dec 30 Python
python实现简易自习室座位预约系统
Jun 30 Python
Python实现双向链表基本操作
May 25 Python
解决python 上传图片限制格式问题
Oct 30 #Python
Python字典的概念及常见应用实例详解
Oct 30 #Python
Python集合基本概念与相关操作实例分析
Oct 30 #Python
python opencv将表格图片按照表格框线分割和识别
Oct 30 #Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
Oct 30 #Python
python常见字符串处理函数与用法汇总
Oct 30 #Python
pygame库实现俄罗斯方块小游戏
Oct 29 #Python
You might like
怎样在UNIX系统下安装php3
2006/10/09 PHP
ThinkPHP php 框架学习笔记
2009/10/30 PHP
PHP与Java进行通信的实现方法
2013/10/21 PHP
PHP中使用sleep造成mysql读取失败的案例和解决方法
2014/08/21 PHP
Zend Framework教程之Bootstrap类用法概述
2016/03/14 PHP
php实现文件预览功能
2017/05/23 PHP
jQuery使用手册之一
2007/03/24 Javascript
探索Emberjs制作一个简单的Todo应用
2012/11/07 Javascript
js仿百度有啊通栏展示效果实现代码
2013/05/28 Javascript
js实现瀑布流的一种简单方法实例分享
2013/11/04 Javascript
jquery修改属性值实例代码(设置属性值)
2014/01/06 Javascript
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
2014/02/12 Javascript
jQuery CSS()方法改变现有的CSS样式
2014/08/20 Javascript
使用JavaScript 实现的人脸检测
2015/03/24 Javascript
实践中学习AngularJS表单
2016/03/21 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
2016/04/25 Javascript
浅谈javascript alert和confirm的美化
2016/12/15 Javascript
dropload.js插件下拉刷新和上拉加载使用详解
2017/10/20 Javascript
JavaScript定义及输出螺旋矩阵的方法详解
2017/12/01 Javascript
Spring boot 和Vue开发中CORS跨域问题解决
2018/09/05 Javascript
jquery+php后台实现省市区联动功能示例
2019/05/23 jQuery
[35:29]Secret vs VG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
[01:02:07]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python 从远程服务器下载东西的代码
2013/02/10 Python
采用python实现简单QQ单用户机器人的方法
2014/07/03 Python
Django通用类视图实现忘记密码重置密码功能示例
2019/12/17 Python
pytorch 自定义参数不更新方式
2020/01/06 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
matplotlib subplot绘制多个子图的方法示例
2020/07/28 Python
strlen的几种不同实现方法
2013/05/31 面试题
电子商务专业推荐信范文
2013/12/02 职场文书
2015初中教导处工作总结
2015/07/21 职场文书
给学校的建议书400字
2015/09/14 职场文书
pytorch 如何使用amp进行混合精度训练
2021/05/24 Python
python 进阶学习之python装饰器小结
2021/09/04 Python
基于Android10渲染Surface的创建过程
2022/08/14 Java/Android