python基础学习-元组
"""
元组:
一旦定义完成,不可修改
需要在程序中封装数据,但不希望数据被篡改,使用元组
同列表
# 字面量
( 元素1,元素2, 元素3 )
# 定义变量
变量名称 = ( 元素1,元素2, 元素3 )
# 定义空列表
变量名称 = ()
变量名称 = tuple()
元组可以存储多个数据,且可以为不同的数据类型,支持嵌套 my_list = (1, (2, 3), 4)
注:::
定义1个元素的元组
t = ("hello", ) 1个元素时,必须有逗号,否则不是元组
下标索引,从0开始
my_tuple = ("it", "my", 34, (1, 3, 4), True)
my_tuple[0] 取"it"
可以反向索引,从后往前,从-1开始,一次递减
my_tuple[-1] 取True
my_tuple[3][0] 取1
方法:
index() 查找某个元素下标
count() 统计某个元素个数
len() 统计元组个数
while,for循环遍历
如果元组元素中有list,可以修改list中的元素
"""
应用场景
例子1:打包和解包操作。
当我们把多个用逗号分隔的值赋给一个变量时,多个值会打包成一个元组类型;当我们把一个元组赋值给多个变量时,元组会解包成多个值然后分别赋给对应的变量,如下面的代码所示。
# 打包
a = 1, 10, 100
print(type(a), a) # <class 'tuple'> (1, 10, 100)
# 解包
i, j, k = a
print(i, j, k) # 1 10 100
有一种解决变量个数少于元素的个数方法,就是使用星号表达式,我们之前讲函数的可变参数时使用过星号表达式。有了星号表达式,我们就可以让一个变量接收多个值,代码如下所示。需要注意的是,用星号表达式修饰的变量会变成一个列表,列表中有0个或多个元素。还有在解包语法中,星号表达式只能出现一次。
a = 1, 10, 100, 1000
i, j, *k = a
print(i, j, k) # 1 10 [100, 1000]
i, *j, k = a
print(i, j, k) # 1 [10, 100] 1000
*i, j, k = a
print(i, j, k) # [1, 10] 100 1000
*i, j = a
print(i, j) # [1, 10, 100] 1000
i, *j = a
print(i, j) # 1 [10, 100, 1000]
i, j, k, *l = a
print(i, j, k, l) # 1 10 100 [1000]
i, j, k, l, *m = a
print(i, j, k, l, m) # 1 10 100 1000 []
需要说明一点,解包语法对所有的序列都成立,这就意味着对列表以及我们之前讲到的range
函数返回的范围序列都可以使用解包语法。大家可以尝试运行下面的代码,看看会出现怎样的结果。
a, b, *c = range(1, 10)
print(a, b, c)
a, b, c = [1, 10, 100]
print(a, b, c)
a, *b, c = 'hello'
print(a, b, c)
交换两个变量的值。
交换两个变量的值是编程语言中的一个经典案例,在很多编程语言中,交换两个变量的值都需要借助一个中间变量才能做到,如果不用中间变量就需要使用比较晦涩的位运算来实现。在Python中,交换两个变量a
和b
的值只需要使用如下所示的代码。
a, b = b, a