1. 元组

  元组和列表类似,但属于不可变序列,元组一旦创建,用任何方法都不可修改其元素。

  元组的定义方式和列表相同,但定义时所有元素是放在一对圆括号“()”中,而不是方括号中。

1.1元组创建

  • 使用”=”将一个元组赋值给变量

  >>> a_tuple=('a','b','mpilgrim','z','example')
  >>> a_tuple
  ('a', 'b', 'mpilgrim', 'z', 'example')
  >>> a = (3)    # 这里的括号代表数学里面的小括号
  >>> a
  3
  >>> a = (3,)      # 包含一个元素的元组,最后必须写多个逗号
  >>> a
  (3,)
  >>> a = 3,      # 也可以这样去创建元组
  >>> a
  (3,)
  >>> x = ()      # 创建空元组
  >>> x
  ()

  • 使用tuple函数将其他序列转换为元组

  >>> tuple('abcdefg')     # 把字符串转换为元组
  ('a', 'b', 'c', 'd', 'e', 'f', 'g')
  >>> aList = [-1,-4,6,7.5,-2.3,9,11]
  >>> aList
  [-1, -4, 6, 7.5, -2.3, 9, 11]
  >>> tuple(aList)        # 把列表转换为元组
  (-1, -4, 6, 7.5, -2.3, 9, 11)
  >>> s = tuple()        # 空元组
  >>> s
  ()

1.2 访问元组

  • 元组可以使用下标索引来访问元组中的值,与列表类似

  >>> a = ('a','b','c')
  >>> a[0]
  'a'  

  • 因为元组也是一个序列,所以我们可以访问元组中的指定位置的元素,也可以截取索引中的一段元素

  >>> c = ('a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c')
  >>> c[2:4]
  ('c', 'a')

1.3 修改元组

  • 与字符串和列表一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组

  >>> a = ('a','b','c')
  >>> a[0]
  'a'
  >>> a = ('a','b','c')
  >>> b = (1,2,3)
  >>> a + b
  ('a', 'b', 'c', 1, 2, 3)
  >>> a*3
  ('a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c')
  >>>

  注意:这里修改元组的意思其实是返回了一个新的元组,并没有对原来的元组进行修改

1.4 删除元组

  • 使用del可以删除元组对象,不能删除元组中的元素

  >>> a = ('a','b','c')
  >>> a
  ('a', 'b', 'c')
  >>> del a
  >>> a
  Traceback (most recent call last):
  File "<pyshell#38>", line 1, in <module>
  a
  NameError: name 'a' is not defined

1.5 元组常用函数

  >>> student= (1, "tom", "2008-05-06", 10, 135.7)
  >>> print(len(student))    # len 返回元组的元素个数
  5
  >>> num=(1, 2, 3, 4, 5, 6, 7 )
  >>> print (max(num))    # max 返回元组元素最大值
  7
  >>> num=(1, 2, 3, 4, 5, 6, 7 )  
  >>> print (min(num))    # min 返回元组元素最小值
  1

1.6 元组与列表的区别

  • 元组一旦定义就不允许更改。
  • 元组没有append()、extend()和insert()等方法,无法向元组中添加元素。
  • 元组没有remove()或pop()方法,也无法对元组元素进行del操作,不能从元组中删除元素。
  • 从效果上看,tuple( )冻结列表,而list( )融化元组。

1.7 元组的优点

  • 元组的速度比列表更快。如果定义了一系列常量值,而所需做的仅是对它进行遍历,那么一般使用元组而不用列表。
  • 元组对不需要改变的数据进行“写保护”将使得代码更加安全。
  • 元组可用作字典的“键”,也可以作为集合的元素。列表永远不能当做字典键使用,也不能作为集合的元素,因为列表不是不可变的。

  注意:如果元组里面的元素嵌套着列表,那么这个列表中的元素其实是可变的。

  >>> t = ('a', 'b', ['A', 'B'])
  >>> t[2][0] = 'X'
  >>> t[2][1] = 'Y'
  >>> t
  ('a', 'b', ['X', 'Y'])
  >>>

  所以这里的理解应该是元组 t 里面的元素本身不可变,但是其中有一个元素是一个list,我们对list中的元素进行了修改,但是并没有对元组里面的元素进行修改,所以这里运行才是正常的。

Python 元组详细使用的更多相关文章

  1. Python元组

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

  2. Python 元组内置函数

    Python元组包含了以下内置函数 序号 方法及描述 1 cmp(tuple1, tuple2)比较两个元组元素. 2 len(tuple)计算元组元素个数. 3 max(tuple)返回元组中元素最 ...

  3. Python元组与字典详解

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

  4. Python 元组 count() 方法

    描述 Python 元组 count() 方法用于统计某个元素在元祖中出现的次数. 语法 count() 方法语法: T.count(obj) 参数 obj -- 元祖中统计的对象. 返回值 返回元素 ...

  5. Python 元组 index() 方法

    描述 Python 元组 index() 方法用于从元祖中找出某个对象第一个匹配项的索引位置,如果这个对象不在元祖中会报一个异常. 语法 index() 方法语法: T.index(obj[,star ...

  6. Python 元组 tuple() 方法

    描述 Python 元组 tuple() 方法用于将可迭代对象(字符串.列表.元祖.字典)转换为元组. 语法 tuple() 方法语法: tuple(iterable) 参数 iterable -- ...

  7. Python 元组 min() 方法

    描述 Python 元组 min() 方法返回元组中元素最小值. 语法 min() 方法语法: min(T) 参数 T -- 指定的元组. 返回值 返回元组中元素最小值. 实例 以下实例展示了 min ...

  8. Python 元组 max() 方法

    描述 Python 元组 max() 方法返回元组中元素最大值. 语法 max() 方法语法: max(T) 参数 T -- 指定的元组. 返回值 返回元组中元素最大值. 实例 以下实例展示了 max ...

  9. Python 学习笔记(九)Python元组和字典(一)

    Python 元组 元组的定义  元组(tuple)是一种Python对象类型,元组也是一种序列 Python中的元组与列表类似,不同之处元组的元素不能修改 元组使用小括号,列表使用方括号 元组的创建 ...

  10. python 元组拾遗

    python 元组拾遗 python 语法糖 def printall(*args):  return args  一个以 * 开头的参数将参数聚集为一个元组. printall函数可以接收任意个数的 ...

随机推荐

  1. u-swipe-action 宽度计算的延迟导致组件加载时内部样式错误

    https://toscode.gitee.com/umicro/uView/issues/I1Y50J 左图为电脑显示效果,右图为app显示效果. 原因:u-swipe-action 宽度计算的延迟 ...

  2. 概率图模型 · 蒙特卡洛采样 · MCMC | 非常好的教学视频

    https://www.bilibili.com/video/BV17D4y1o7J2?p=1 非常感谢!感觉学会一点了,应该能写作业了

  3. Icoding 链表 删除范围内结点

    1.题目: 已知线性表中的元素(整数)以值递增有序排列,并以单链表作存储结构.试写一高效算法,删除表中所有大于mink且小于maxk的元素(若表中存在这样的元素),分析你的算法的时间复杂度. 链表结点 ...

  4. [转帖]haproxy

    HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性.负载均衡,以及基于TCP和HTTP的应用程序代理. HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保 ...

  5. [转帖]CentOS-7-x86_64-Everything-2009 rpm包列表(CentOS7.9)

    CentOS-7-x86_64-Everything-2009 rpm包列表(CentOS7.9) 共10073个文件 复制389-ds-base-1.3.10.2-6.el7.x86_64.rpm ...

  6. [转帖]grafana 连接 influxdb 1.x 和 2.x

    文章目录 一.安装 influxdb Ⅰ.docker 安装 二.常用操作 Ⅰ.influxdb 1.x版本添加用户认证 Ⅱ.influxdb 2.x 使用命令行 Ⅲ.CLI 配置token Ⅴ.CL ...

  7. 【转帖】JVM的发展历程

    目录 1.Sun Classic VM 2.Exact VM 3.Sun HotSpot(主流) 4.JRockit 5.IBM J9 6.下一代虚拟机Graal VM 1.Sun Classic V ...

  8. [转帖]xargs详解

    https://www.cnblogs.com/xiaofeng666/p/10800939.html xargs与find经常结合来进行文件操作,平时删日志的时候只是习惯的去删除,比如 # find ...

  9. [转帖]关于redis,你需要了解的几点!

    github:https://github.com/windwant 博客园 首页 新随笔 联系 订阅 管理 随笔 - 227  文章 - 4  评论 - 36  阅读 - 73万   一.关于 re ...

  10. [转帖]jemalloc内存分配算法

    https://www.cnblogs.com/xiaojiesir/p/15450732.html jemalloc内存分配算法简介 jemalloc 是由 Jason Evans 在 FreeBS ...