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 相关文章推荐
Python编写检测数据库SA用户的方法
Jul 11 Python
解析Python中的变量、引用、拷贝和作用域的问题
Apr 07 Python
Django项目中model的数据处理以及页面交互方法
May 30 Python
Python3编码问题 Unicode utf-8 bytes互转方法
Oct 26 Python
python将txt文件读入为np.array的方法
Oct 30 Python
Django2.1.3 中间件使用详解
Nov 26 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
Feb 19 Python
django的auth认证,authenticate和装饰器功能详解
Jul 25 Python
seek引发的python文件读写的问题及解决
Jul 26 Python
python内存监控工具memory_profiler和guppy的用法详解
Jul 29 Python
python中如何打包用户自定义模块
Sep 23 Python
Sentry的安装、配置、使用教程(Sentry日志手机系统)
Jul 23 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
php如何解决无法上传大于8M的文件问题
2014/03/10 PHP
destoon二次开发常用数据库操作
2014/06/21 PHP
PHP使用range协议实现输出文件断点续传代码实例
2014/07/04 PHP
PHP将整数数字转换为罗马数字实例分享
2019/03/17 PHP
Laravel 数据库加密及数据库表前缀配置方法
2019/10/10 PHP
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
2012/02/27 Javascript
js全屏显示显示代码的三种方法
2013/11/11 Javascript
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
2014/02/12 Javascript
QQ空间顶部折页撕开效果示例代码
2014/06/15 Javascript
jQuery验证插件 Validate详解
2014/11/20 Javascript
详解JavaScript中shift()方法的使用
2015/06/09 Javascript
CSS中position属性之fixed实现div居中
2015/12/14 Javascript
使用jQuery制作浮动工具栏的实例分享
2016/05/13 Javascript
Google 地图获取API Key详细教程
2016/08/06 Javascript
JavaScript函数节流和函数防抖之间的区别
2017/02/15 Javascript
jQuery 实现双击编辑表格功能
2017/06/19 jQuery
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
微信小程序loading组件显示载入动画用法示例【附源码下载】
2017/12/09 Javascript
浅谈JS对象添加getter与setter的5种方法
2018/06/09 Javascript
详解关于element el-button使用$attrs的一个注意要点
2018/11/09 Javascript
JS事件绑定的常用方式实例总结
2019/03/02 Javascript
微信小程序点击滚动到指定位置的实现
2020/05/22 Javascript
Ant Design的可编辑Tree的实现操作
2020/10/31 Javascript
pyqt4教程之实现windows窗口小示例分享
2014/03/07 Python
使用paramiko远程执行命令、下发文件的实例
2017/10/01 Python
Python实现基于SVM的分类器的方法
2019/07/19 Python
python通过http下载文件的方法详解
2019/07/26 Python
使用Canvas操作像素的方法
2018/06/14 HTML / CSS
网上常见的一份Linux面试题(多项选择部分)
2015/02/07 面试题
敬老月活动总结
2014/08/28 职场文书
2015年出纳年终工作总结
2015/05/14 职场文书
担保公司2015年终工作总结
2015/10/14 职场文书
2016年质量月活动总结报告
2016/04/05 职场文书
Mysql 性能监控及调优
2021/04/06 MySQL
比较node.js和Deno
2021/04/27 Javascript
redis数据结构之压缩列表
2022/03/21 Redis