天池龙珠--元组

本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql

元组
定义

「元组」定义语法为: (元素1, 元素2, …, 元素n)

  • Python 的元组与列表类似,不同之处在于元组的元素在创建后不能修改。(类似与字符串)

    • 所谓元组的不可变指的是元组所指向的内存中的内容不可变。
  • 元组使用小括号 ( ),列表使用方括号 [ ]

    • 元组中只包含一个元素时,需要在元素后面添加逗号 , ,否则括号会被当作运算符使用

    • 例子

      tup = ('friday', )
      print(tup)  # ('friday',)
      print(type(tup))  # <class 'tuple'>
      
      tup_error = ('friday' )
      print(tup_error)  # friday
      
  • 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

  • 索引值以 0 为开始值,-1 为从末尾的开始位置。

    创建空元组

    x = ()
    

增删改查

因为元组内的元素不能修改,显然 没有 增删改 单一元素的操作

‘改’

但是只要元组中的元素内可更改 (mutable),那么我 们可以直接更改其元素内,注意这跟赋值其元素不同。

# 本例中第三个元素是list类型,其内部元素可变
t1 = ('1', '2', ['3', '4', '5'])
print(t1)  # ('1', '2', ['3', '4', '5'])
t1[2][1] = '6'  
print(t1)  # ('1', '2', ['3', '6', '5'])

使用原本的元组创建新元组,再将新元组储存回变量

week = ('Monday', 'Tuesday', 'Thursday', 'Friday')
week = week[:2] + ('Wednesday',) + week[2:]
print(week) # ('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday')

count(‘python’) 是记录在元组 t 中该元素出现几次,显然是 1 次

index(10.31) 是找到该元素在元组 t 的索引,显然是 1

t = (1, 10.31, 'python')
print(t.count('python')) # 1
print(t.index(10.31)) # 1
解压(拆包)元组

​ 在Python中,解压(或拆包)元组是一种将元组的元素分配给多个变量的操作。这样可以方便地从元组中提取各个元素并赋值给对应的变量,从而简化代码和提高可读性。

​ 要解压元组,只需在赋值语句中使用与元组中元素数量相同的变量,并将元组放在等号右边。

​ Python会自动按顺序将元组的元素分配给这些变量。

​ 如果是二维元组(按照元组中的结构定义变量)

下面是一个示例,展示如何解压元组:

pythonCopy code# 定义一个元组
tuple_example = (10, 20, 30)

# 解压元组并将元素赋值给变量
a, b, c = tuple_example

# 打印变量的值
print(a)  # 10
print(b)  # 20
print(c)  # 30

在上面的示例中,我们将元组 tuple_example 的三个元素依次赋值给变量 abc。因此,a 的值为 10b 的值为 20c 的值为 30

需要注意的是,解压元组时,变量的数量必须与元组的元素数量相匹配,否则会引发错误。

如果想要丢弃元组中的某个元素,可以使用下划线 _ 作为占位符,表示忽略该元素。

pythonCopy code# 定义一个元组
tuple_example = (10, 20, 30)

# 解压元组并丢弃第二个元素
a, _, c = tuple_example

# 打印变量的值
print(a)  # 10
print(c)  # 30

用通配符「*」,英文叫 wildcard,在计算机语言中代表一个或多个元素。下例 就是把多个元素丢给了 rest 变量。

t = 1, 2, 3, 4, 5
a, b, *rest, c = t
print(a, b, c) # 1 2 5
print(rest) # [3, 4]

如果你根本不在乎 rest 变量,那么就用通配符「*」加上下划线「_」。

a, b, *_ = t
print(a, b) # 1 2

在上述示例中,我们使用 _ 占位符来丢弃元组的第二个元素,并将第一个元素赋值给变量 a,第三个元素赋值给变量 c

元组相关的操作符
  1. 比较操作符

    比较运算符对于元组的使用与其他序列类型(如列表)是相同的。当进行元组比较时,首先比较第一个元素,如果相等,则继续比较第二个元素,依此类推。如果所有元素都相等,则认为两个元组相等。如果两个元组长度不同且前面的元素都相等,则长度较长的元组被认为大于长度较短的元组。

    如果元组中的元素是可比较的(例如,数值类型),则可以进行比较运算。但如果元组中的元素是不可比较的类型(例如,包含列表或字典等可变对象),则比较可能会引发异常。

  2. 逻辑操作符

  3. 连接操作符 +

  4. 重复操作符 *

  5. 成员关系操作符 in 、 not in

t1 = (2, 3, 4, 5)
t2 = ('老马的程序人生', '小马的程序人生')
t3 = t1 + t2
print(t3) 
# (2, 3, 4, 5, '老马的程序人生', '小马的程序人生')
t4 = t2 * 2
print(t4) 
# ('老马的程序人生', '小马的程序人生', '老马的程序人生', '小马的程序人生')

练习题
  1. 元组概念

    写出下面代码的执行结果和最终结果的类型

    (1, 2)*2
    (1, )*2
    (1)*2
    
    (1, 2, 1, 2)  # 同下
    (1, 1)  # 是元组,*2 重复元组
    2  # 元素后没有 ,()视为 计算符号 
    
  2. 拆包过程是什么?

     a, b = 1, 2
    

    上述过程属于拆包吗?

    ​ 属于,虽然 1,2 没有(),但是也是元组,把元组的变量分开赋值给变量

    可迭代对象拆包时,怎么赋值给占位符?

    ​ 使用 * 实现忽略一个到多个变量

    ​ 使用 _ 实现忽略一个位置

    t = (1, 2, 3, 4, 5)
    a, b, *font, d = t
    print(a, b, font, d)
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值