认识元组

不可变数据类型,可以一次性存储多个数据,且可以为不同数据类型。元组内的元素不能修改
元组用( )定义,数据之间用 「 , 」隔开;或者省略小括号

  • tuple()函数, 参数 iterable 是可迭代对象(字符串、列表、元组、集合和字典等)

    1. a = tuple([1, 2, 3])
    2. print(a)
  • 使用逗号的方法

    1. atuple = 1, 2, 3
    2. print(type(atuple))
  • 使用小括号的方法

    1. atuple = (1, 2, 3)
    2. print(type(atuple))
  1. # 创建空元组
  2. info_tuple = ()
  3. # 元组只包含一个元素
  4. in_tuple = (1, )

只有一个数据要添加逗号表示是元组

元组属性

转换

tuple() 函数,将其它的数据类型转化成元组

索引

语法: 元组序列[ index ],元组的索引默认从 0 开始

  1. tuple1 = (10, 20, ['aa','bb','cc'],50,30)
  2. temp = tuple1[2][0]
  3. print(temp)
  4. -------------------------------------------
  5. >>> 'aa'

切片

对操作的对象截取其中一部分的操作,字符串、列表、元组都支持切片操作

  • 语法: 元组序列 [ start: end: step]
    • start: 切片操作包含开始位置的元素。正数索引表示从左到右默认从 0 开始取元素,负数索引表示从右到左默认从 -1 开始取元素
    • end: 切片操作不包含结束位置的元素
    • step: 代表每次取值的跨度,不写表示默认是 1。步长为负数,表示倒序(从右往左)选取数据
    • 步长: 代表每次取值的跨度,默认是 1,正数表示从左到右,负数表示从右到左
  • 选取方向和步长的方向冲突,则无法选取数据

解包

将多个数据放到元组中,这个过程被称为元组打包;解包(拆包)就是将元组中的元素取出,分别赋值给不同的变量。
主要用于函数返回值

  1. name, age = ('tony', 20)
  2. print(name)
  3. print(age)
  4. ------------------------
  5. >>> tony
  6. >>> 20

元组方法

元组不支持增加、修改操作,因为是不可变类型。同时元组不支持删除单个元素,但是可以删除这个元组

删除

  • del 和 del()
    • del 元组 或 del(元组)

查找

  • index()
    • 元组序列.index( 数据, 【 开始位置下标, 结束位置下标 】 )
    • 元组序列.rindex( 数据, 开始位置下标, 结束位置下标 ),查找方向右侧开始
    • 如果存在就返回数据开始的位置下标,否则返回错误


  • count()
    • 元组序列.count( 数据, 【 开始位置下标, 结束位置下标 】 )
    • 开始和结束位置下标可以省略,表示在整个元组序列中出现的次数
    • 如果存在就返回存在的次数,否则返回 0


  • len()
    • len( 元组序列, 【 开始位置下标,结束位置下标 】 )
    • 返回值是元组中数据的个数

元组内列表元素修改

  1. tuple1 = (10, 20, ['aa','bb','cc'],50,30)
  2. tuple1[2][0] = 'aaa'
  3. print(tuple1)

元组有列表,列表里面的数据是支持修改的,因为列表是可变类型

元组遍历

同 list 遍历操作一样,推荐 for..in

  1. tup = (1, 2, 3)
  2. for i in tup:
  3. print(i)
  4. -----------------
  5. >>> 1
  6. >>> 2
  7. >>> 3

元组应用场景

  • 元组在字典中可以当做 key 来使用,而列表不可以
  • 在函数中,有时候要返回多个值,一般采用元组的方式
  • 在一些设定中不能修改值的场景下使用元组来代替列表