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多线程http下载实现示例
Dec 30 Python
django自定义Field实现一个字段存储以逗号分隔的字符串
Apr 27 Python
python中threading超线程用法实例分析
May 16 Python
浅述python中深浅拷贝原理
Sep 18 Python
pycharm运行出现ImportError:No module named的解决方法
Oct 13 Python
详解爬虫被封的问题
Apr 23 Python
python使用参数对嵌套字典进行取值的方法
Apr 26 Python
Django Rest framework解析器和渲染器详解
Jul 25 Python
Python3 filecmp模块测试比较文件原理解析
Mar 23 Python
Pytorch转onnx、torchscript方式
May 25 Python
python实现自动打卡的示例代码
Oct 10 Python
教你使用Python pypinyin库实现汉字转拼音
May 27 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入门速成教程
2007/03/19 PHP
PHP中通过加号合并数组的一个简单方法分享
2011/01/27 PHP
浅谈PHP变量作用域以及地址引用问题
2013/12/27 PHP
Javascript与PHP验证用户输入URL地址是否正确
2014/10/09 PHP
PHP基于SMTP协议实现邮件发送实例代码
2017/04/27 PHP
Yii框架实现图片上传的方法详解
2017/05/20 PHP
PHP copy函数使用案例代码解析
2020/09/01 PHP
Javascript typeof 用法
2008/12/28 Javascript
Javascript中的变量使用说明
2010/05/18 Javascript
图片动画横条广告带上下滚动可自定义图片、链接等等
2013/10/20 Javascript
javascript自定义startWith()和endWith()的两种方法
2013/11/11 Javascript
javascript实现图片跟随鼠标移动效果的方法
2015/05/13 Javascript
JS更改select内option属性的方法
2015/10/14 Javascript
理解javascript中的MVC模式
2016/01/28 Javascript
js 将图片连接转换成base64格式的简单实例
2016/08/10 Javascript
ionic实现滑动的三种方式
2016/08/27 Javascript
微信小程序 自动登陆PHP源码实例(源码下载)
2017/05/08 Javascript
nodejs socket实现的服务端和客户端功能示例
2017/06/02 NodeJs
React Native实现进度条弹框的示例代码
2017/07/17 Javascript
微信小程序 swiper 组件遇到的问题及解决方法
2019/05/26 Javascript
express如何解决ajax跨域访问session失效问题详解
2019/06/20 Javascript
bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?
2019/07/26 Javascript
Flask框架实现给视图函数增加装饰器操作示例
2018/07/16 Python
Anaconda下配置python+opencv+contribx的实例讲解
2018/08/06 Python
Python 忽略warning的输出方法
2018/10/18 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
2019/08/10 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
CSS3实现网站商品展示效果图
2020/01/18 HTML / CSS
英国最大的手表网站:The Watch Hut
2017/03/31 全球购物
土建工程师岗位职责
2014/06/10 职场文书
党员对照检查材料
2014/09/22 职场文书
幼儿教师辞职信
2015/02/27 职场文书
在职证明书模板
2015/06/15 职场文书
创业的9条正确思考方式
2019/08/26 职场文书
MySQL 用 limit 为什么会影响性能
2021/09/15 MySQL
使用CSS实现音波加载效果
2023/05/07 HTML / CSS