文章目录

  • 可迭代的(iterable)
  • 索引和切片(indexing and slicing)
  • 序列解包(sequence unpacking)
  • 不可修改的(immutable)
  • named tuple

可迭代的(iterable)

iterable就是可遍历的,我们可以通过for打印元组的内容。


print('tuple iterable')
tup1 = ('python', 1, 2, 3, 4)
for item in tup1:print("item = ", item)

索引和切片(indexing and slicing)

索引和切片,就是说能够使用索引访问值,或者对元组切片。


print('tuple indexing and slicing')
print('tup1[1] = ', tup1[1])
print('tup1[1:3] = ', tup1[1:3])

tup1[1]就是使用索引访问,tup1[1:3]是切片,取下标为1-3的值,注意这里索引3取不到。

序列解包(sequence unpacking)

就是可以对我们关心的内容进行处理,不关心的内容不获取。


print('tuple sequence unpacking')
name, _, _, x, y = tup1
print('name = {name1}, x = {x1}, y = {y1}'.format(name1=name, x1=x, y1=y))
name, *_ = tup1
print('name = ', name)
name, *val = tup1
print('name = {}, val = {}'.format(name, val))

比如只关心name,x,y 中间的元素不关心,则可以使用下划线(_)来代替对应位置的元素。
或者只关心第一个元素,其余元素不关心,则使用*_来表示。
或者使用*+变量名来把后面的内容放在一个列表里面。注意这里是放在列表里面噢。

不可修改的(immutable)

tuple的值是不可修改的,如果需要修改,只能重新创建一个元组。


print('tuple immutable')
# tup1[1] = 2
dict1 = {tup1: 1}
print('dict1 = ', dict1)
tup1 = (1, 2, 3)
print('dict1 = ', dict1)

但是可以把元组作为字典的key赋值。因为重新赋值tup1,并不会影响字典里面的值。

特点:
不仅可以作为字典的key,还是线程安全的,后期使用多线程编程,使用元组是很安全的。
还有就是元组不可变,性能比列表要好,所以变量不可变,推荐使用元组。

named tuple

这个作用是什么呢,我们先看一部分代码:


tup2 = ('tom', 25)
tup3 = ('jory', 30)
print(tup2[0], tup3[0])class person:def __init__(self, name, age):self.__name = nameself.__age = agedef getName(self):return self.__namedef getAge(self):return self.__agetup2 = person('tom', 25)
tup3 = person('jory', 30)
print(tup2.getName())
print(tup2.getAge())

我这里想使用元组来保存数据,并且用第一位和第二位来表示姓名和年龄。
上面的代码使用了两种方式,但是各有优缺点。第一种代码简单,但是index0我们看到以后,并不能很快知道代表的什么含义。第二种使用类的方式,代码会多一些,但是我们能很清楚的知道我们需要获取的是什么值。
所以下面介绍:namedtuple
相当于两种方式的折中,代码简单,但是也明了。
直接上代码:


from collections import namedtuple
person = namedtuple('person', ['name', 'age'])
tup4 = person('lilin', 35)
tup5 = person('wanglei', 15)
print('tup4.name = ', tup4.name)
print('tup5.age = ', tup5.age)

通过namedtuple给person添加了name和age,然后就可以直接和使用元组一样使用了。

这个namedtuple只是collections模块的一个容器。
下面截图里面还有一些其他容器,其他容器会在后续的学习笔记中体现出来。

python学习-元组的复习及进阶使用(iterable、indexing and slicing、sequence unpacking、immutable、named tuple)相关推荐

  1. python学习-元组tuple(定义、删除、长度、复制、查找、遍历、operator,和列表的区别)

    元组tuple 元组的创建 元组的使用 使用进阶 元组和列表的区别 元组的创建 Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组的创建,使用()或在定义变量以后添加一个逗号(,) ...

  2. Python 学习笔记之字典(进阶篇)

    基础教程介绍了基本概念,特别是对象和类. 进阶教程对基础教程的进一步拓展,说明Python的细节.希望在进阶教程之后,你对Python有一个更全面的认识. 之前我们说了,列表是Python里的一个类. ...

  3. python自学路线-零基础Python学习路线,小白的进阶之路!

    近几年Python的受欢迎程度可谓是扶摇直上,当然了学习的人也是愈来愈多.一些学习Python的小白在学习初期,总希望能够得到一份Python学习路线图,小编经过多方汇总为大家汇总了一份Python学 ...

  4. 零基础Python学习路线图,小白的进阶之路!

    近几年Python的受欢迎程度可谓是扶摇直上,当然了学习的人也是愈来愈多.一些学习Python的小白在学习初期,总希望能够得到一份Python学习路线图,小编经过多方汇总为大家汇总了一份Python学 ...

  5. python学习第十六天 --继承进阶篇

    这一章节主要讲解面向对象高级编程->继承进阶篇,包括类多继承介绍和继承经典类和新式类属性的查找顺序不同之处. 多继承 上一章节我们讲到继承,子类继承父类,可以拥有父类的属性和方法,也可以进行扩展 ...

  6. python学习笔记7--面向对象进阶,异常处理,socket编程初识

    一.类的特殊方法 1.静态方法 静态方法只是封装在类中的一个普通函数,其和类没有什么关系,但只可以通过类来调用,不能访问实例或类中的任何属性. 使用 @staticmethod 声明可以将一个方法声明 ...

  7. python学习-知识点回顾(Python3的安装,编译器、一些关键知识点、数据类型、数据类型转换、运算符优先级)

    文章目录 说明 python特点 Python3下载 PyCharm 标识符 python保留字 行与缩进 基本数据类型 Python数据类型转换 Python运算符优先级 说明 首先说明:本篇博文知 ...

  8. Python学习 - 面向对象之多态

    Python学习 - 语法入门:https://blog.csdn.net/wanzijy/article/details/125287855 Python学习 - 数据类型:https://blog ...

  9. python学习指南—Python 进阶(Python Cookbook)

    系列文章目录 Python数据科学家养成计划(Python学习指南) 文章目录 系列文章目录 前言 一.数据结构和算法 1. 将序列分解为单独的变量 2. 从任意长度的可迭代对象中分解元素 3. 保留 ...

最新文章

  1. 一年75次上微博热搜!宇宙首富Tony老师上线!马斯克DIY发型
  2. SAP 物料在启用序列号管理或者不启用序列号管理之间快速切换?
  3. C/C++ 实现的websocket客户端
  4. effective c++_【阅读笔记】Effective C++()
  5. 《CODM》的成功源自何处?TGA年度移动游戏的总结和思考
  6. qt: 获取sql数据表的所有的字段;
  7. java怎么判断mysql中是否存在我们查找的索引_10张图告诉你,MySQL 是如何查找数据的?...
  8. 验证邮箱是否合法php,验证邮箱是否合法
  9. latex 公式编号_放弃mathtype,word也可以轻松输入公式
  10. lua系列之 lua-cjson模块安装报错问题解决
  11. visibility和hidden
  12. 【鲲鹏HCIA考试】随堂习题卷六
  13. 汽车变排量空调压缩机电磁阀故障诊断
  14. 为你的整轨APE音乐制作CUE文件(图文)
  15. HTML+CSS+JS大作业:生态环境网站设计——环境保护主题-绿色环保 (9页) web期末作业设计网页_绿色环保大学生网页设计作业成品
  16. [软件测试] - No.1 Fault Error Failure 区别
  17. Unity MMO游戏架构设计之角色设计一
  18. 火狐浏览器插件开发小试
  19. FID(Fusion-in-Decoder models)源码笔记
  20. 10款最著名的代码(文本)编辑器

热门文章

  1. 如何使用 controllerExtensions 给 SAP Fiori Elements List Report 的表格注册事件响应函数
  2. 如何使用ngTemplateOutlet给ng-template模板传递参数
  3. SAP Kyma能像SAP BYD那样做field extension吗
  4. 深入学习SAP UI5框架代码系列之三:HTML原生事件 VS UI5 Semantic事件
  5. 2020年10月13日工作日志 - 挂掉的单元测试
  6. Angular DefaultDomRenderer2.setProperty - HTML的值是如何从Angular Component flow过来的,以及跨平台支持
  7. 我的工作日报 - 2020-9-16 星期三
  8. Microsoft Azure里创建Enterprise Applications
  9. SAP Fiori Elements - how object_id is parsed from OData response
  10. 使用ABAP SAT工具分析SAP OData service实现明细