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时间戳与时间字符串互相转换实例代码
Nov 28 Python
Python中统计函数运行耗时的方法
May 05 Python
Python基于dom操作xml数据的方法示例
May 12 Python
django1.11.1 models 数据库同步方法
May 30 Python
Python 实现王者荣耀中的敏感词过滤示例
Jan 21 Python
OpenCV搞定腾讯滑块验证码的实现代码
May 18 Python
Python any()函数的使用方法
Oct 28 Python
使用opencv将视频帧转成图片输出
Dec 10 Python
Python爬虫之Selenium设置元素等待的方法
Dec 04 Python
python 实现全球IP归属地查询工具
Dec 18 Python
详解Django的MVT设计模式
Apr 29 Python
python读取并查看npz/npy文件数据以及数据显示方法
Apr 14 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对数组排序代码分享
2014/02/24 PHP
PHP生成RSS文件类实例
2014/12/05 PHP
PHP将HTML转换成文本的实现代码
2015/01/21 PHP
PHP 正则表达式小结
2015/02/12 PHP
使用 laravel sms 构建短信验证码发送校验功能
2017/11/06 PHP
PHP hebrev()函数用法讲解
2019/02/21 PHP
微信公众号实现扫码获取微信用户信息(网页授权)
2019/04/09 PHP
自适应高度框架 ----属个人收藏内容
2007/01/22 Javascript
给artDialog 5.02 增加ajax get功能详细介绍
2012/11/13 Javascript
jquery删除指定的html标签并保留标签内文本内容的方法
2014/04/02 Javascript
详解JavaScript语法对{}处理的坑爹之处
2014/06/05 Javascript
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
Spring mvc 接收json对象
2015/12/10 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
2016/02/18 Javascript
基于Turn.js 实现翻书效果实例解析
2016/06/20 Javascript
jQuery.uploadify文件上传组件实例讲解
2016/09/23 Javascript
最常见和最有用的字符串相关的方法详解
2017/02/06 Javascript
微信小程序页面滑动屏幕加载数据效果
2020/11/16 Javascript
vue-prop父组件向子组件进行传值的方法
2018/03/01 Javascript
JavaScript如何对图片进行黑白化
2018/04/10 Javascript
详解element-ui中form验证杂记
2019/03/04 Javascript
送你43道JS面试题(收藏)
2019/06/17 Javascript
Vue实现拖放排序功能的实例代码
2019/07/08 Javascript
vue 设置 input 为不可以编辑的实现方法
2019/09/19 Javascript
vue 全局环境切换问题
2019/10/27 Javascript
BootstrapValidator实现表单验证功能
2019/11/08 Javascript
Python线性拟合实现函数与用法示例
2018/12/13 Python
python进行文件对比的方法
2018/12/24 Python
使用selenium模拟登录解决滑块验证问题的实现
2019/05/10 Python
Python 日期的转换及计算的具体使用详解
2020/01/16 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
2020/10/30 Python
Qoo10马来西亚:全球时尚和引领潮流的购物市场
2016/08/25 全球购物
在购买印度民族服饰:Soch
2020/09/15 全球购物
C++的几个面试题附答案
2016/08/03 面试题
行政助理求职自荐信
2013/10/26 职场文书
CSS3实现指纹特效代码
2022/03/17 HTML / CSS