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中,交换两个变量ab的值只需要使用如下所示的代码。

a, b = b, a
posted @ 2023-05-10 18:58  ashuai~  阅读(42)  评论(0编辑  收藏  举报