返回顶部
首页 > 资讯 > 后端开发 > Python >Python进阶学习之你真的懂元组吗?
  • 615
分享到

Python进阶学习之你真的懂元组吗?

Python元组应用Python元组 2023-05-16 15:05:46 615人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录元组作为没有字段名的记录元组拆包具名元组总结元组作为没有字段名的记录 元组中的每个元素其实都存储了该元素的未知以及字段的数据,但是当我们把它理解为”不可变的列表&ld

元组作为没有字段名的记录

元组中的每个元素其实都存储了该元素的未知以及字段的数据,但是当我们把它理解为”不可变的列表“的时候,这些信息仿佛就被忽略了。如果把元组当成一些字段的数量和位置信息的集合,那么它的用处会更多。我们来看下面这个例子:

# 例1 元组拆包
student_xiaoming = ('xiaoming','22','male','202303190701')
xiaoming_name, xiaoming_age, xiaoming_sex, xiaoming_id = student_xiaoming
print(f'姓名:{xiaoming_name} 年龄:{xiaoming_age} 性别:{xiaoming_sex} 学号:{xiaoming_id}')

>>> 姓名:xiaoming 年龄:22 性别:male 学号:202303190701

print('-' * 10)
# 例2 巧用拆包和占位符得到我们想要的数据
students_id = [('小明','2023031901'),('小刚','2023031902'),('小红','2023031903')]
for name,_ in students_id:
    print(name)
    
>>> 小明
>>> 小刚
>>> 小红

print('-' * 10)
# 例3 利用元组拆包格式化输出
for student in students_id:
    print('%s:%s'%student)
    
>>>小明:2023031901
>>>小刚:2023031902
>>>小红:2023031903

接下来,我们就对上述元组新“姿势”逐一介绍。

元组拆包

在上述的例1中对所有变量的赋值我们仅用一行代码就解决了,这就是最简单的元组拆包的应用。最简单的利用元组拆包的办法就是平行赋值,也就是把元组中的所有元素一并赋值到对应的变量中,如下例所示:

test = ('苹果', 'apple')
chinese, english = test
print(chinese, english)

>>> 苹果 apple

除此之外,我们还可以和*与_两个符号组合,写出更简约而美的代码,我们首先看下面一个例子:

# 定义例子函数
def happy(rice_num, cola_num):
    print(f'今天好开心,我吃了{rice_num}碗米饭,喝了{cola_num}瓶快乐水!')
# 普通调用
happy(7,5)

>>> 今天好开心,我吃了6碗米饭,喝了5瓶快乐水!

# 利用*对元组进行拆包作为函数参数
test_tuple = (7,5)
print(*test_tuple)
happy(*test_tuple)

>>> 7 5
>>> 今天好开心,我吃了7碗米饭,喝了5瓶快乐水! 

利用_占位

在上述例子中,我们使用*对元组进行了拆包然后作为函数的参数。接下来我们再来看看_和元组拆包组成的优雅用法,看下面这个例子:

import os
print(os.path.split('D:\\Software\\anaconda\\envs\\lp\\lib\\ntpath.py'))
>>> ('D:\\Software\\anaconda\\envs\\lp\\lib', 'ntpath.py')

_, file_name = os.path.split('D:\\Software\\anaconda\\envs\\lp\\lib\\ntpath.py')
print(file_name)

>>> ntpath.py

在某些情况下,我们在操作本地地址的时候只需要获取文件的名字而不关心其路径,在上述例子中我们使用了_代替那些我们不需要的内容,而使用变量file_name变量一下获取到了我们需要的文件名字。

*处理剩下的元素

还可以有很多其它的用法,例如使用args作为我们不确定的参数,其还能作为平行赋值中一个很重要的符号,我们看下面几个例子:

a, b ,*rest_num = [i for i in range(10)]
print(a,b,rest_num)

a, *rest_num, b  = [i for i in range(10)]
print(a,b,rest_num)

a, *rest_num, b  = [i for i in range(2)]
print(a,b,rest_num)

a, b, *rest_num = [i for i in range(2)]
print(a,b,rest_num)

>>> 0 1 [2, 3, 4, 5, 6, 7, 8, 9]
>>> 0 9 [1, 2, 3, 4, 5, 6, 7, 8]
>>> 0 1 []
>>> 0 1 []

通过上述例子我们可以发现,利用*可以在任何位置获取到我们不关心或者我们想要的取值。

嵌套元组中的拆包

元组拆包同样可以在嵌套结构中进行,只要我们定义的变量是符合其结构的,我们看下面这个例子:

student_infORMation  = ('xiaoming','202303190701',(98,77))
xiaoming_name, xiaoming_id,(xiaominmg_english, xiaoming_math) = student_information
print(f'姓名:{xiaoming_name} 学号:{xiaoming_id} 英语成绩:{xiaominmg_english} 数学成绩:{xiaoming_math}')

>>> 姓名:xiaoming 学号:202303190701 英语成绩:98 数学成绩:77

在上述例子中,我们利用与元组嵌套相同的结构获取到了我们希望的信息。

具名元组

有时候我们在编写类的时候,通常不需要那么冗余的结构,例如我们并不想在类中编写方法,而只需要一些具有名字的属性。这时候具名元组就能满足需求,我们首先来看具名元组定义的语法格式:

from collections import namedtuple
类名 = namedtuple(类名, 由空格隔开的或可迭代表达式组成的参数列表)

具名元组的用法

我们看下面这个示例:

from collections import namedtuple

# 分别利用可迭代表达式与空格隔开的参数名表示属性列表
teacher = namedtuple('teacher', ['name','age','sex'])
student = namedtuple('student', 'name age sex')

wanggang = teacher('wanggang','44','male')
xiaoming = student('xiaoming','18','male')

print(wanggang.name)
print(xiaoming.name)

>>> wanggang
>>> xiaoming

具名元组常用函数

除此之外,具名元组还有几个非常常用的方法:

#  查看该类的参数列表
print(teacher._fields)
>>> ('name', 'age', 'sex')

# 通过字典方式展示
print(xiaoming._asdict)
>>> <bound method student._asdict of student(name='xiaoming', age='18', sex='male')>

# 通过元组构建具名元组
xiaohong_information = ('xiaohong','19','female')
xiaohong = student._make(xiaohong_information)
print(xiaohong)
>>> student(name='xiaohong', age='19', sex='female')

总结

在本文中,我们介绍了元组作为记录的功能,这其中包括元组拆包,具名元组等多种用法。在编程中灵活使用这些语法会使得我们的程序更易读简洁。

到此这篇关于python进阶学习之你真的懂元组吗?的文章就介绍到这了,更多相关Python元组内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python进阶学习之你真的懂元组吗?

本文链接: https://lsjlt.com/news/210044.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python进阶学习之你真的懂元组吗?
    目录元组作为没有字段名的记录元组拆包具名元组总结元组作为没有字段名的记录 元组中的每个元素其实都存储了该元素的未知以及字段的数据,但是当我们把它理解为”不可变的列表&ld...
    99+
    2023-05-16
    Python元组应用 Python元组
  • Python进阶学习之带你探寻Python类的鼻祖-元类
    目录一、类也是对象二、动态地创建类三、使用 type 创建类四、使用type创建带有属性的类五、使用type创建带有方法的类六、到底什么是元类(终于到主题了)七、metaclass属...
    99+
    2024-04-02
  • python学习之元组
    在python中,元组使用小括号,小括号的元素使用逗号隔开即可; 1.元组和列表的区别元组和列表的相同点就是都是序列类型的容器对象,可以存放任何类型的数据,支持切片,迭代操作等;元组和列表的不同点是元组是不可变类型,大小固定,而列表是可变...
    99+
    2023-01-31
    python
  • python进阶之协程你了解吗
    目录协程的定义协程和线程差异协程的标准协程的优点协程的缺点python中实现协程的方式async&await关键字事件循环协程函数和协程对象awaitTask对象asynci...
    99+
    2024-04-02
  • python 进阶学习之python装饰器小结
    装饰器总结 什么是装饰器?处理函数的函数,加一个功能,但是不影响原来函数的内部结构生活中的例子:给手机加一个外壳,外壳保护了手机 装饰器有什么用?增强函数的功能 装饰器使用场景增加被...
    99+
    2024-04-02
  • Javascript异步编程之你真的懂Promise吗
    目录前言基本用法语法错误处理Promise链式调用async & await常用的方法1、Promise.resolve()2、Promise.reject()3、Promi...
    99+
    2024-04-02
  • Python学习之元组的使用详解
    目录元组的创建元组的删除元组部分元素的输出元组的嵌套元组元素的个数计算:len()元组中的元素最大最小值的求解:max(),min()元组中某元素出现的次数:count函数元组中某元...
    99+
    2024-04-02
  • JS进阶指南之你真的掌握变量和类型了吗
    目录导读一、JavaScript数据类型二、为什么区分原始类型和对象类型2.1 不可变性2.2 引用类型2.3 复制2.4 比较2.5 值传递和引用传递三、分不清的null和unde...
    99+
    2024-04-02
  • 你真的需要学习 Java、NumPy 和 Django 吗?
    随着人工智能、大数据和云计算等技术的快速发展,编程语言也越来越多样化。目前,Java、NumPy 和 Django 是三个非常流行的编程语言和框架。但是,对于初学者来说,是否需要学习这些技术呢?让我们一起探讨一下。 Java Java 是...
    99+
    2023-09-27
    学习笔记 numy django
  • 跟Alex学Python之- 你真的了解
      初学编程的小伙伴都会对于深浅拷贝的用法有些疑问,今天我们就结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~~~预备知识一——python的变量及其存储  在详细的了解python中赋值、copy和deepcopy之前,...
    99+
    2023-01-31
    你真 Alex Python
  • Python进阶学习之特殊方法实例详析
    前言 最近在学习python,学习到了一个之前没接触过的--特殊方法。 什么是特殊方法?当我们在设计一个类的时候,python中有一个用于初始化的方法$__init__$,类似于java中的构造器,这个就是...
    99+
    2022-06-04
    进阶 实例 方法
  • Python学习之列表和元组的使用详解
    目录列表和元组简介列表学习要点列表的声明语法列表的读取列表操作列表元素的修改和删除列表元素合并列表元素顺序变化元组学习要点元组基本知识元组的基本操作列表和元组简介 如果说在 Pyth...
    99+
    2024-04-02
  • vuex学习进阶篇之getters的使用教程
    目录1.设置gettes 事件2.使用调用3.最终页面示例getters的优点:总结紧接上篇,本片主要讲讲vuex 中 getters的使用,示例中使用了vuex的modules,g...
    99+
    2022-11-13
    vuex getters使用 vuex状态管理getters
  • 容器编程算法的 Python 学习笔记:你真的掌握了吗?
    容器编程算法是 Python 编程中的重要部分,掌握容器编程算法是提高 Python 编程水平的重要一步。本篇文章将带您深入了解容器编程算法,并通过演示代码的方式让您更好的掌握这一领域。 一、什么是容器编程算法 容器编程算法是指在 Pyt...
    99+
    2023-09-09
    学习笔记 编程算法 容器
  • 你真的掌握了 PHP 数组吗?看看这份学习笔记教程!
    PHP 是一种非常流行的编程语言,它提供了丰富的功能和特性,其中最重要的就是数组。PHP 数组是一种特殊的变量类型,可以存储多个值,并且可以通过索引来访问这些值。然而,很多 PHP 开发者并没有真正掌握数组的使用方法,导致他们在编写 PHP...
    99+
    2023-08-07
    数组 学习笔记 教程
  • ASP 缓存 学习笔记 http:你真的掌握了吗?
    在 ASP 中,缓存是一项非常有用的功能,它可以大大提高网站的访问速度和性能。然而,许多人对 ASP 缓存的使用还不是很熟悉,本文将为你介绍 ASP 缓存的基本概念、使用方法和注意事项,帮助你更好地掌握这一技术。 一、什么是 ASP 缓存...
    99+
    2023-08-07
    缓存 学习笔记 http
  • 你真的需要 Java 教程来学习 Unix 索引吗?
    在学习Unix索引的过程中,许多人会选择参考Java教程。但是,你真的需要Java教程来学习Unix索引吗?在本文中,我们将探讨这个问题,并提供一些实用的Unix索引代码示例。 首先,让我们看一下Java教程和Unix索引之间的区别。Jav...
    99+
    2023-08-04
    教程 unix 索引
  • Python光学仿真之对光的干涉理解学习
    光的干涉 干涉即两束光在叠加过程中出现的强度周期性变化情况,其最简单的案例即为杨氏双缝干涉。 如图所示,光从 S S S点发出,通过两个狭缝 S 1 , S 2 S_1,S_2 S...
    99+
    2024-04-02
  • python元组和字典的简单学习
    用圆括号()标识,定义元组后,元组元素不可修改。如果想修改元组只能重新定义元组。 因为元组不可更改,所以也没有增删改等用法,主要语法就是访问元组元素,遍历元组。 访问元组元素: 1 tuple1 = (1, 2, 3, 4) 2 pr...
    99+
    2023-01-30
    字典 简单 python
  • python学习笔记之列表(list)与元组(tuple)详解
    前言 最近重新再看python的基础知识,感觉自己还是对于这些知识很陌生,需要用的时候还是需要翻书查阅,还是先注重基础吧——我要重新把python的教程阅读一遍,把以前自己忽略的部分学习,加强练习和记忆。 ...
    99+
    2022-06-04
    详解 学习笔记 列表
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作