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 转换 Javascript %u 字符串为python unicode的代码
Sep 06 Python
Python使用装饰器进行django开发实例代码
Feb 06 Python
python使用生成器实现可迭代对象
Mar 20 Python
浅析python打包工具distutils、setuptools
Apr 20 Python
python计算列表内各元素的个数实例
Jun 29 Python
pandas筛选某列出现编码错误的解决方法
Nov 07 Python
简单了解Python生成器是什么
Jul 02 Python
python切片(获取一个子列表(数组))详解
Aug 09 Python
python爬虫把url链接编码成gbk2312格式过程解析
Jun 08 Python
python zip()函数的使用示例
Sep 23 Python
python3使用diagrams绘制架构图的步骤
Apr 08 Python
Python selenium的这三种等待方式一定要会!
Jun 10 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
使用无限生命期Session的方法
2006/10/09 PHP
PHP远程调试之XDEBUG
2015/12/29 PHP
PHP实现查询两个数组中不同元素的方法
2016/02/23 PHP
PHP设计模式之装饰器模式定义与用法简单示例
2018/08/13 PHP
自制轻量级仿jQuery.boxy对话框插件代码
2010/10/26 Javascript
Javascript模块化编程(一)模块的写法最佳实践
2013/01/17 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
2015/06/23 Javascript
js实现圆盘记速表
2015/08/03 Javascript
如何解决ligerUI布局时Center中的Tab高度大小
2015/11/24 Javascript
BootStrap table表格插件自适应固定表头(超好用)
2016/08/24 Javascript
BootStrap中Table分页插件使用详解
2016/10/09 Javascript
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
2016/12/14 Javascript
JavaScript实现图片瀑布流和底部刷新
2017/01/02 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
基于vue 实现token验证的实例代码
2017/12/14 Javascript
解决vue中使用swiper插件问题及swiper在vue中的用法
2018/04/04 Javascript
vue组件与复用详解
2018/04/08 Javascript
原生JS实现$.param() 函数的方法
2018/08/10 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
深入解读VUE中的异步渲染的实现
2020/06/19 Javascript
Python+Django在windows下的开发环境配置图解
2009/11/11 Python
浅谈Django REST Framework限速
2017/12/12 Python
Python变量类型知识点总结
2019/02/18 Python
Python列表倒序输出及其效率详解
2020/03/04 Python
keras模型保存为tensorflow的二进制模型方式
2020/05/25 Python
移动端HTML5开发神器之vconsole详解
2020/12/15 HTML / CSS
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2014/07/21 面试题
社区禁毒工作方案
2014/06/02 职场文书
化学工程专业求职信
2014/08/10 职场文书
《领导干部从政道德启示录》学习心得体会
2016/01/20 职场文书
职场干货:简历中的自我评价应该这样写!
2019/05/06 职场文书
新员工入职感言范文!
2019/07/04 职场文书
在Windows下安装配置CPU版的PyTorch的方法
2021/04/02 Python
浅谈mysql增加索引不生效的几种情况
2021/06/23 MySQL
python利用while求100内的整数和方式
2021/11/07 Python
开发微信小程序之WXSS样式教程
2022/04/18 HTML / CSS