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删除nginx缓存文件示例(python文件操作)
Mar 26 Python
Unicode和Python的中文处理
Mar 19 Python
Python中动态创建类实例的方法
Mar 24 Python
Python自动化运维_文件内容差异对比分析
Dec 13 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
Sep 04 Python
深入理解Python中的 __new__ 和 __init__及区别介绍
Sep 17 Python
在ubuntu16.04中将python3设置为默认的命令写法
Oct 31 Python
python 获取等间隔的数组实例
Jul 04 Python
python 搜索大文件的实例代码
Jul 08 Python
Python + Flask 实现简单的验证码系统
Oct 01 Python
keras小技巧——获取某一个网络层的输出方式
May 23 Python
Python项目打包成二进制的方法
Dec 30 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调用Oracle存储过程的方法
2008/09/12 PHP
php自动识别文字编码并转换为目标编码的方法
2015/08/08 PHP
PHP内存使用情况如何获取
2015/10/10 PHP
php多线程实现方法及用法实例详解
2015/10/26 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
2016/11/05 PHP
PHP实现简易用户登录系统
2020/07/10 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
2021/03/09 PHP
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
2010/03/07 Javascript
jQuery EasyUI API 中文文档 - ComboTree组合树
2011/10/11 Javascript
jquery入门—选择器实现隔行变色实例代码
2013/01/04 Javascript
浏览器兼容console对象的简要解决方案分享
2013/10/24 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
Javascript实现多彩雪花从天降散落效果的方法
2015/02/02 Javascript
js中hash和ico的关联分析
2015/02/05 Javascript
JavaScript制作windows经典扫雷小游戏
2015/03/31 Javascript
jQuery插件slider实现拖动滑块选取价格范围
2015/04/30 Javascript
JavaScript截取、切割字符串的技巧
2016/01/07 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
2016/05/03 Javascript
BootStrap 页签切换失效的解决方法
2017/08/17 Javascript
vue利用better-scroll实现轮播图与页面滚动详解
2017/10/20 Javascript
vue添加axios,并且指定baseurl的方法
2018/09/19 Javascript
jQuery-ui插件sortable实现自由拖动排序
2018/12/01 jQuery
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
python类和继承用法实例
2015/07/07 Python
Python3 安装PyQt5及exe打包图文教程
2019/01/08 Python
Flask-WTF表单的使用方法
2019/07/12 Python
python2和python3应该学哪个(python3.6与python3.7的选择)
2019/10/01 Python
Tensorflow 多线程设置方式
2020/02/06 Python
澳大利亚礼品卡商店:Gift Card Store
2019/06/24 全球购物
历史学专业毕业生求职信
2013/09/27 职场文书
毕业设计致谢词
2015/05/14 职场文书
2015年税务稽查工作总结
2015/05/26 职场文书
农村结婚典礼主持词
2015/06/29 职场文书
小学同学聚会感言
2015/07/30 职场文书
MySQL中in和exists区别详解
2021/06/03 MySQL
使用RedisTemplat实现简单的分布式锁
2021/11/20 Redis