元组(tuple)

(1)创建元组

(2)元组的使用

(3)打包和拆包

(4)元组的操作

创建元组

  • 表达式:(元组对象,…)

  • 描述元组时,有时也可以不写对象(e.g. (1,2,3)与 1,2,3 表示的是同一个元组)

  • 空元组:tuple() 或者 ()

  • 用类型名tuple创建元组:tuple(可迭代对象)
    e.g.

    >>>tuple(range(10))
    (0,1,2,3,4,5,6,7,8,9)
    >>>tuple('abc')
    ('a','b','c')
    
  • 元组一旦创建后,便不能改变

  • 只包含一个元素的元组,必须写一个逗号,括号不重要,系统显示元组时,总有括号。若不加逗号,只有括号,e.g.(12),解释器将认为这里出现的是普通括号,表示运算顺序的优先结合,并不表示元组。
    e.g.

    >>>x = 1,
    >>>x
    (1,)
    >>>('abc',)
    ('abc',)          #此时‘abc’字符串为元组的一个元素
    
  • 元组可以取下标,但是不能通过下标给元组中的不可变元素重新赋值
    e.g.

    >>>tup = ('a','b','c')
    >>>tup[0]
    'a'
    >>>tup[0] = 'd'
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    TypeError: 'tuple' object does not support item assignment
    
  • 虽然元组本身不能改变,但是可以包含能改变的元素
    e.g.

     >>>tup = (1,2,3,[1,2,3])
    >>>tup[3][1] = 10
    >>>tup
    (1,2,3,[1,10,3])
    
  • enumerate构造二元组的表,注意内置函数enumerate生成的是迭代器,并不真正生成结果的表,需要调用list得到表。
    e.g.

    >>>seasons = ['Spring', ' Summer', 'Fall', 'Winter']
    >>>enumerate(seasons)
    <enumerate object at 0x0000029D3B682990>
    >>>list(enumerate(seasons)
    [(0, 'Spring'), (1, ' Summer'), (2, 'Fall'), (3, 'Winter')]
    

    调用enumerate函数得到元组的第一个元素下标为0,我们可以通过enumerate(seasons, start = 1)改变元素下标
    e.g.

    >>>list(enumerate(seasons, start=1)
    [(1, 'Spring'), (2, ' Summer'), (3, 'Fall'), (4, 'Winter')]
    

元组的使用

元组是序列,因此也是可迭代对象

  • 元组可直接作为循环变量
    e.g.

    >>> for x in 3.1, 4.0, 2.3, 5.5:print(x)
    

    这里解释器会认为 in 后的是一个表达元组的表达式,可以加括号,也可以不加括号。

  • 因为元组对象可以直接进行运算,因此任意表达式作为元组,也能使用 for 语句进行循环。
    e.g.

    >>> for x in 3+1, sin(5), sqrt(4.7), 9.0:print(x)
    

打包和拆分

python支持打包(packing)和拆分(unpacking)的隐式动作

  • 赋值中的打包和拆分
    打包
    e.g.

    >>> tp = 123,345,'and',567   #创建元租就是打包
    

    即将对象123,345,‘and’,567打包成一个元组,做成一个整体的对象,赋值给 tp。

    拆分
    e.g.

    >>> a,b,c,d = tp
    

    tp 由之前定义为(123,345,‘and’,567)四个元素的元组,给a,b,c,d赋值时解释器自动将元组拆开,把其中的元素分别按位置赋给四个变量,此时a,b,c,d的值为:

    >>>a
    123
    >>>b
    345
    >>>c
    'and'
    >>>d
    567
    

    要完成这种赋值,等号两边的变量个数必须正好相等,否则会报错
    e.g.

    >>>tp = [1,2,3,4,5]
    >>>a,b,c,d = tp
    Traceback (most recent call last):File "<stdin>", line 1, in <module>
    ValueError: too many values to unpack (expected 4)
    

    其实,各种序列都可以拆分,只要满足赋值语句两边的元素结构相同
    e.g.

    >>> a,b,d = [1,2,3]            #列表的拆分
    >>> a,[b,c] = [1,(2,3)]        #两层拆分
    >>>a,(b,c),d = [1,(2,3),4]
    
  • 函数的参数与元组
    区分函数中的简单实参表达式和元组实参

    函数 实参意义
    f1(a,b,c+1) 三个实参调用函数f1
    f2((a,b,c+1)) 一个元组实参调用函数f2
    f3(a,(b,c+1)) 两个实参调用函数f3,一个是简单实参a,另一个是元组,
    f4(2,3,) 两个实参调用函数f4,3后面的逗号被忽略,没有影响
    f5(2,(3,)) 两个实参调用函数f5,一个是简单实参2,另一个是单元组
    f6(2,(3)) ; f7(2,(x+1)) f6,f7都调用了两个实参,括号没有实际作用

    带星号形参

    • 在函数定义中,除了可以有前面介绍多的普通形参(可以带默认值)之外,还可以有一种能接受任意多个实参的形参。

    • 形式:*形参名 (即在形参名前加一个星号)

    • 其值为一些实参的元组。

    • 在一个函数定义的参数表里只能有一个这样的形参

    • 在函数调用时,带星号形参将约束到所有未能得到匹配的普通实参构成的元组,默认情况是约束到空元组(如果函数调用中没有未匹配的实参)
      e.g.

      def mysum(*args):s = 0for x in args:s += xreruen s
      

      调用函数

      >>>print(mysum(1,2,3,4,5,6)
      21
      >>>print(mysum())
      0
      

      注意:若函数形参表里的某个普通形参带有默认值,(即a=1的形式),位于其后直至带星号形参的所有普通形参都必须带默认值。若带星号形参后还有普通形参,函数调用时,必须用关键字实参的形式为他们提供实参。
      e.g.

      >>>def f(a,b=3,c,*args):       #将会报 SyntaxError
      >>>def f(a,b=3,c=4,*args):     #允许
      >>>def g(a,b=3,c=4,*args,d):
      >>>print(g(........,e=1))   #调用函数g时必须用关键字实参的形式给e提供实参,否则会报错
      
      1. 普通实参按位置与形参一一匹配
      2. 关键字实参按关键字与同名实参匹配
      3. 没得到实参但有默认值的形参取其默认值为实参
      4. 前面匹配剩下的普通实参做成一个元组约束到带星号形

    拆分实参
    在实参表达式前加*,表达式应为一个可迭代对象(表或者元组),来表示实参对象。解释器会将这个对象拆分,用其元素为函数提供若干个实际的实参。
    调用前面定义的mysum函数进行解释:

    >>> a = 1,2,3,4,5,6
    >>>print(mysum(*a))
    21
    

    也可用于为多个循环统一描述对象:

    >>> b = [0,20,3]
    >>> for i in range(*b):        #等同于for i in range(0,20,3)
    

元组的操作

序列 表达式 意义
1 s.count(x) x在s中出现的次数
2 s.index(x[,i[,j]] x在s中首次出现的下标
3 max(s) ; min(s) s中的最大元素;s中的最小元素
4 len(s) s的长度

Python:元组使用相关推荐

  1. python元组(tuple)使用示例+常用方法+列表(list)和元组(tuple)的异同?

    python元组(tuple)使用示例+常用方法+列表(list)和元组(tuple)的异同? 元组(tuple) # 元组类似列表,元组里面的元素也是进行索引计算. # 列表里面的元素的值可以修改, ...

  2. python 元组传参 *args 字典传参 **kwargs 的用法

    python 元组传参 *args 字典传参 **kwargs 的用法 # 元组参数 def func_arg(*args):print("args:", args) func_a ...

  3. 熟练掌握python是什么概念-想要熟练掌握Python元组?你需要了解这10件应知事项...

    本文转载自公众号"读芯术"(ID:AI_Discovery) 人生苦短,Python是岸. 作为一种通用编程语言,Python已成为各学术和工业领域中最流行的语言之一. 此前,IE ...

  4. Python元组与字典详解

    Python 元组 Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. 如下实例: tup ...

  5. Lesson 016 —— python 元组

    Lesson 016 -- python 元组 Python 的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔 ...

  6. python 元组使用_Python3

    Python3 元组 Python 的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号 ( ),列表使用方括号 [ ]. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. ...

  7. python元组类型_什么是python元组数据类型

    什么是python元组数据类型 发布时间:2020-08-25 11:46:29 来源:亿速云 阅读:68 这篇文章运用简单易懂的例子给大家介绍什么是python元组数据类型,代码非常详细,感兴趣的小 ...

  8. python元组的创建取值排序计数_Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】...

    本文实例讲述了Python元组 tuple的概念与基本操作.分享给大家供大家参考,具体如下: 元组 tuple 元组 tuple的定义 元组的创建 元组的元素访问和计数 1. 元组的元素不能修改 2. ...

  9. Python元组tuple(不可变)

    Python元组Tuple(不可变): 元组的特点: 1.元组的初始化: tuple = (1, )  #元组只有一个元素的话,初始化时要加,否则当做元素的普通变量类型处理 tuple = (1, 2 ...

  10. python 元组和列表区别_Python干货整理:一分钟了解元组与列表使用与区别

    元组是 Python 对象的集合,跟列表十分相似.下面进行简单的对比. 列表与元组 1.python中的列表list是变量,而元组tuple是常量. 列表:是使用方括号[],元组:则是使用圆括号() ...

最新文章

  1. 【LeetCode】87. Scramble String
  2. 树莓派小车参考方案,了解一下
  3. Virtual Machine Manager 2008 2008 R2系列之安装部署
  4. Open images from USB camera on linux using V4L2 with OpenCV
  5. 深度学习常见概念解析
  6. ORACLE物理DG日常管理
  7. mysql-ubuntu卸载安装mysql
  8. MYSQL在centos上主从配置
  9. 博文视点大讲堂36期——让Oracle跑得更快 成功举办
  10. [leetcode] Power of Two 判断一个数是否是2的平方
  11. 牛客网编程练习之编程马拉松:发工资
  12. CICD详解(十一)——sonar详解
  13. STM32串口通信UARTx
  14. 打印5列五颗星_55组“数学顺口溜”,孩子想学好数学必须背熟
  15. Bitbucket Cloud recently stopped supporting account passwords for Git authen报错解决
  16. java获取基金实时数据_JAVA爬取天天基金网数据
  17. EEG中的EOG伪迹
  18. 关于ROHDESCHWARZ公司电流探头EZ-17系数修正的说明 1
  19. 一维参照物的摄像机定标
  20. Django 搜索结果分页的实现 以及点击下一页搜索条件丢失可能的原因分析

热门文章

  1. 软件测试,别海投简历
  2. ios多线程浅谈和使用
  3. 你不具备访问 IIS 配置文件的权限。要在 IIS 上打开和创建网站,需要使用 Administrator 帐户运行 Visual Studio。
  4. virtualbox虚机硬盘扩容
  5. 从IDEA代码调试器的threads选项卡的一个细节谈如何学习编程
  6. python excel写入日期变数字_解决python 读取excel时 日期变成数字并加.0的问题
  7. DMOZ网站选择标准(转)
  8. 计算机端口里没有usb,解决打印机端口设置中没有USB选项的方法
  9. 2021常州市程序设计小能手真题及题解
  10. 全球人口突破80亿!免费分享全球人口分布数据