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之关于循环的小伎俩
Oct 02 Python
python遍历序列enumerate函数浅析
Oct 17 Python
Python中的pack和unpack的使用
Mar 12 Python
python脚本生成caffe train_list.txt的方法
Apr 27 Python
Python实现字典(dict)的迭代操作示例
Jun 05 Python
Python操作MySQL数据库的方法
Jun 20 Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
Jun 26 Python
Window10下python3.7 安装与卸载教程图解
Sep 30 Python
Python之——生成动态路由轨迹图的实例
Nov 22 Python
python实现贪吃蛇游戏源码
Mar 21 Python
Django form表单与请求的生命周期步骤详解
Jun 07 Python
Python用tkinter实现自定义记事本的方法详解
Mar 31 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的QRcode类与大家分享
2011/11/13 PHP
一个PHP并发访问实例代码
2012/09/06 PHP
PHP实现将textarea的值根据回车换行拆分至数组
2015/06/10 PHP
PHP对象相关知识总结
2017/04/09 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
2019/12/20 PHP
javascript 表格排序和表头浮动效果(扩展SortTable)
2009/04/07 Javascript
javascript禁用键盘功能键让右击及其他键无效
2013/10/09 Javascript
js获取指定日期周数以及星期几的小例子
2014/06/27 Javascript
js实现带有介绍的Select列表菜单实例
2015/08/18 Javascript
jQuery实现类似标签风格的导航菜单效果代码
2015/08/25 Javascript
jQuery实现页面点击后退弹出提示框的方法
2016/08/24 Javascript
微信小程序 数据封装,参数传值等经验分享
2017/01/09 Javascript
Iscrool下拉刷新功能实现方法(推荐)
2017/06/26 Javascript
JS简单实现动态添加HTML标记的方法示例
2018/04/08 Javascript
Angular 封装并发布组件的方法示例
2018/04/19 Javascript
解决jquery的ajax调取后端数据成功却渲染失败的问题
2018/08/08 jQuery
vue3.0 CLI - 2.2 - 组件 home.vue 的初步改造
2018/09/14 Javascript
angular inputNumber指令输入框只能输入数字的实现
2019/12/03 Javascript
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
2020/07/28 Javascript
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
2017/11/02 Python
python使用Plotly绘图工具绘制气泡图
2019/04/01 Python
python print出共轭复数的方法详解
2019/06/25 Python
face++与python实现人脸识别签到(考勤)功能
2019/08/28 Python
python入门:argparse浅析 nargs='+'作用
2020/07/12 Python
python requests库的使用
2021/01/06 Python
欧迪办公美国官网:Office Depot
2016/08/22 全球购物
有影响力的人、名人和艺术家的官方商品:Represent
2019/11/26 全球购物
Watch Station官方网站:世界一流的手表和智能手表
2020/01/05 全球购物
Booking.com德国:预订最好的酒店和住宿
2020/02/16 全球购物
VLAN和VPN有什么区别?分别实现在OSI的第几层?
2014/12/23 面试题
儿童生日会策划方案
2014/05/15 职场文书
搞笑车尾标语
2014/06/23 职场文书
先进集体事迹材料范文
2014/12/25 职场文书
vue-cropper组件实现图片切割上传
2021/05/27 Vue.js
sql查询语句之平均分、最高最低分及排序语句
2022/05/30 MySQL
win10滚动条自动往上跑怎么办?win10滚动条自动往上跑的解决方法
2022/08/05 数码科技