码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python中元组的用法2-2


    3 元组中的元素

    3.1 元组中的元素可以是不同类型

    相关代码如下所示:

    1. >>> t3 = 1.1, 2, True, "hello"
    2. >>> print(t3)
    3. (1.1, 2, True, 'hello')

    其中,元组t3中包含了浮点类型、整数、布尔类型和字符串类型的元素。

    3.2 元组中的元素可以是元组、列表、集合和字典

    相关代码如下所示:

    1. >>> t4 = 1,2,(3,4,5)
    2. >>> print(t4)
    3. (1, 2, (3, 4, 5))

    其中,元组t4中嵌套了一个元组,即将元组作为其元素。

    需要注意是的是,当列表等可变类型作为元组的元素时,虽然不能改变直接元组的元素,但是可以改变元组中列表的元素。相关代码如下所示。

    1. >>> t5 = 1,2,[3,4,5]
    2. >>> t5[2][0] = 10
    3. >>> print(t5)
    4. (1, 2, [10, 4, 5])

    其中,t5中包含了一个列表,可以通过索引改变列表中元素的值。

    3.3 当元组中只有一个元素时

    当元组中只有一个元素时,需要在该元素后面加一个逗号,相关代码如下所示:

    1. >>> t6 = (1)
    2. >>> type(t6)
    3. <class 'int'>
    4. >>> t6 = 1,
    5. >>> type(t6)
    6. <class 'tuple'>

    从以上代码中可以看出,当元组中只有一个元素时,如果不加逗号,则此时定义的变量类型是int而不是tuple。只有在元组后面加逗号后,定义的变量类型才是tuple。

    4 元组的打包与解包

    在“1 元组的定义”中提到定义元组时,可以不用圆括号,实际上这就是元组打包的过程,将每个元素打包成元组。打包的逆过程是解包,即把元组中的元素分解为变量,相关代码如下所示。

    1. >>> t1 = 1,2,3
    2. >>> type(t1)
    3. <class 'tuple'>
    4. >>> x,y,z = t1
    5. >>> print(x, y, z)
    6. 1 2 3
    7. >>> type(x)
    8. <class 'int'>

    其中,元组t1将1,2,3这三个数字打包;之后再将t1进行解包,元素值分别保存到变量x、y和z中。

    需要注意的是,元组解包时,用于保存元组元素的变量个数必须与元组元素个数相同,否则代码会报错。

    1. >>> x,y = t1
    2. Traceback (most recent call last):
    3.   File "", line 1, in
    4.     x,y = t1
    5. ValueError: too many values to unpack (expected 2)
    6. >>> x,y,z,a = t1
    7. Traceback (most recent call last):
    8.   File "", line 1, in
    9.     x,y,z,a = t1
    10. ValueError: not enough values to unpack (expected 4, got 3)

    从以上代码中可以看到,于保存元组元素的变量个数不能少于元组元素个数,也不能多于元组元素的个数。

  • 相关阅读:
    「尚硅谷与腾讯云官方合作」硅谷课堂项目视频发布
    【vue】axios请求封装,二次封装
    2022年全国最新消防设施操作员(中级消防设施操作员)真题题库及答案
    算法竞赛入门【码蹄集进阶塔335题】(MT2316-2320)
    目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
    Spring注解驱动之FactoryBean注册组件
    OpenCV学习(一)——图像读取
    计算机毕业设计 基于SpringBoot+Vue的财务管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
    为什么说数据安全运维难?有好用的数据安全运维平台吗?
    动态内存分配(基础精讲课件)
  • 原文地址:https://blog.csdn.net/hou09tian/article/details/126184629
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号