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 ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
Jun 10 Python
基于Python实现对PDF文件的OCR识别
Aug 05 Python
Python判断字符串是否xx开始或结尾的示例
Aug 08 Python
Python类中方法getitem和getattr详解
Aug 30 Python
python循环嵌套的多种使用方法解析
Nov 29 Python
Python实现屏幕录制功能的代码
Mar 02 Python
Django User 模块之 AbstractUser 扩展详解
Mar 11 Python
django-利用session机制实现唯一登录的例子
Mar 16 Python
python在一个范围内取随机数的简单实例
Aug 16 Python
如何基于Python爬虫爬取美团酒店信息
Nov 03 Python
浅谈python数据类型及其操作
May 25 Python
python基础学习之生成器与文件系统知识总结
May 25 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生成静态页面分析 模板+缓存+写文件
2009/08/17 PHP
基于php常用正则表达式的整理汇总
2013/06/08 PHP
php生成excel列序号代码实例
2013/12/24 PHP
ThinkPHP多表联合查询的常用方法
2020/03/24 PHP
php实现可用于mysql,mssql,pg数据库操作类
2014/12/13 PHP
PHP实现获取某个月份周次信息的方法
2015/08/11 PHP
PHP格式化显示时间date()函数代码
2018/10/03 PHP
PHP生成短网址的思路以及实现方法的详解
2019/03/25 PHP
在chrome中window.onload事件的一些问题
2010/03/01 Javascript
JavaScript 面向对象之命名空间
2010/05/04 Javascript
Javascript 按位取反运算符 (~)
2014/02/04 Javascript
web前端设计师们常用的jQuery特效插件汇总
2014/12/07 Javascript
微信小程序 教程之模块化
2016/10/17 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
2016/11/30 Javascript
Javascript oop设计模式 面向对象编程简单实例介绍
2016/12/13 Javascript
加载 vue 远程代码的组件实例详解
2017/11/20 Javascript
Angular5.0 子组件通过service传递值给父组件的方法
2018/07/13 Javascript
Vue.js样式动态绑定实现小结
2019/01/24 Javascript
nodejs实现用户登录路由功能
2019/05/22 NodeJs
vue实现表格过滤功能
2019/09/27 Javascript
javascript的hashCode函数实现代码小结
2020/08/11 Javascript
Python中join函数简单代码示例
2018/01/09 Python
kafka-python批量发送数据的实例
2018/12/27 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
利用CSS3的3D效果制作正方体
2020/03/10 HTML / CSS
HTML5+WebSocket实现多文件同时上传的实例
2016/12/29 HTML / CSS
营销主管自我评价怎么写
2013/09/19 职场文书
高中数学教学反思
2014/01/30 职场文书
2014院党委领导班子及其成员群众路线对照检查材料思想汇报
2014/10/04 职场文书
房屋授权无偿使用证明
2014/11/29 职场文书
党员带头倡议书
2015/04/29 职场文书
公司开业主持词
2015/07/02 职场文书
老舍《猫》教学反思
2016/02/17 职场文书
导游词之河北野三坡
2019/12/11 职场文书
css中z-index: 0和z-index: auto的区别
2021/08/23 HTML / CSS
Android Studio 计算器开发
2022/05/20 Java/Android