本笔记为阿里云天池龙珠计划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
的三个元素依次赋值给变量 a
、b
、c
。因此,a
的值为 10
,b
的值为 20
,c
的值为 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
。
元组相关的操作符
-
比较操作符
比较运算符对于元组的使用与其他序列类型(如列表)是相同的。当进行元组比较时,首先比较第一个元素,如果相等,则继续比较第二个元素,依此类推。如果所有元素都相等,则认为两个元组相等。如果两个元组长度不同且前面的元素都相等,则长度较长的元组被认为大于长度较短的元组。
如果元组中的元素是可比较的(例如,数值类型),则可以进行比较运算。但如果元组中的元素是不可比较的类型(例如,包含列表或字典等可变对象),则比较可能会引发异常。
-
逻辑操作符
-
连接操作符 +
-
重复操作符 *
-
成员关系操作符 in 、 not in
t1 = (2, 3, 4, 5)
t2 = ('老马的程序人生', '小马的程序人生')
t3 = t1 + t2
print(t3)
# (2, 3, 4, 5, '老马的程序人生', '小马的程序人生')
t4 = t2 * 2
print(t4)
# ('老马的程序人生', '小马的程序人生', '老马的程序人生', '小马的程序人生')
练习题
-
元组概念
写出下面代码的执行结果和最终结果的类型
(1, 2)*2 (1, )*2 (1)*2
(1, 2, 1, 2) # 同下 (1, 1) # 是元组,*2 重复元组 2 # 元素后没有 ,()视为 计算符号
-
拆包过程是什么?
a, b = 1, 2
上述过程属于拆包吗?
属于,虽然 1,2 没有(),但是也是元组,把元组的变量分开赋值给变量
可迭代对象拆包时,怎么赋值给占位符?
使用 * 实现忽略一个到多个变量
使用 _ 实现忽略一个位置
t = (1, 2, 3, 4, 5) a, b, *font, d = t print(a, b, font, d)