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进程的信号通讯
Apr 09 Python
python和bash统计CPU利用率的方法
Jul 10 Python
Python爬取当当、京东、亚马逊图书信息代码实例
Dec 09 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
Dec 12 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
Feb 22 Python
python批量处理文件或文件夹
Jul 28 Python
关于Python内存分配时的小秘密分享
Sep 05 Python
pytorch中图像的数据格式实例
Feb 11 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
Jun 04 Python
python 写一个文件分发小程序
Dec 05 Python
python全面解析接口返回数据
Feb 12 Python
Python 居然可以在 Excel 中画画你知道吗
Feb 15 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自定义函数实现JS的escape的方法示例
2016/07/07 PHP
PHP实现页面静态化的超简单方法
2016/09/06 PHP
PHP编程获取图片的主色调的方法【基于Imagick扩展】
2017/08/02 PHP
自制轻量级仿jQuery.boxy对话框插件代码
2010/10/26 Javascript
游览器中javascript的执行过程(图文)
2012/05/20 Javascript
jquery分页插件AmSetPager(自写)
2013/04/15 Javascript
随窗体滑动的小插件sticky源码
2013/06/21 Javascript
javascript实现焦点滚动图效果 具体方法
2013/06/24 Javascript
JavaScript中双叹号!!作用示例介绍
2014/09/21 Javascript
nodejs中的fiber(纤程)库详解
2015/03/24 NodeJs
js实现改进的仿蓝色论坛导航菜单效果代码
2015/09/06 Javascript
JS绘制微信小程序画布时钟
2016/12/24 Javascript
基本DOM节点操作
2017/01/17 Javascript
Vue之Watcher源码解析(2)
2017/07/19 Javascript
addeventlistener监听scroll跟touch(实例讲解)
2017/08/04 Javascript
webpack踩坑之路图片的路径与打包
2017/09/05 Javascript
原生JS封装_new函数实现new关键字的功能
2018/08/12 Javascript
Vue-cli@3.0 插件系统简析
2018/09/05 Javascript
详解vue-element Tree树形控件填坑路
2019/03/26 Javascript
JavaScript实现简单的弹窗效果
2020/05/19 Javascript
js实现小球在页面规定的区域运动
2020/06/16 Javascript
design vue 表格开启列排序的操作
2020/10/28 Javascript
[53:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第三场 1月18日
2021/03/11 DOTA
python写日志封装类实例
2015/06/28 Python
python实现12306抢票及自动邮件发送提醒付款功能
2018/03/08 Python
如何使用Python实现自动化水军评论
2019/06/26 Python
python os.path.isfile()因参数问题判断错误的解决
2019/11/29 Python
如何通过python实现全排列
2020/02/11 Python
python自动点赞功能的实现思路
2020/02/26 Python
突袭HTML5之Javascript API扩展4—拖拽(Drag/Drop)概述
2013/01/31 HTML / CSS
养殖行业的创业计划书
2014/01/05 职场文书
超市采购员岗位职责
2014/02/01 职场文书
高中英语演讲稿范文
2014/04/24 职场文书
学校督导评估方案
2014/06/10 职场文书
购房协议书范本
2014/10/02 职场文书
联谊会开场白
2015/06/01 职场文书