Python基础学习(6)—元组及解包

元组

1.1元组的基本简介

元组 表现形式 tuple
元组是一个不可变序列

什么时候用列表?什么时候用元组?
一般当我们希望这个数据不变的时候我们就用元组,其余情况都用列表

1.2创建元组

1 元组 表现形式 tuple
元组是一个不可变序列

什么时候用列表?什么时候用元组?
一般当我们希望这个数据不变的时候我们就用元组,其余情况都用列表

2 创建元组
1 用()创建元组
2 用tuple()函数进行创建,可将列表,range等转换为元组形式

my_tuple = ()
 # 创建了一个空的元组

my_tuple = (1,2,3,4,5) 
# 创建一个元组

print(my_tuple[3])
#打印第四个元素

print(type(my_tuple))
# 打印字典类型

my_tuple[3] = 10
# 修改第四个元素

运行结果

4

<class 'tuple'>

File "D:/python第一节/venv/44.py", line 48, in <module>
    my_tuple[3] = 10
TypeError: 'tuple' object does not support item assignment

1.3元组的解包

1 解包指的就是将元组当中每一个元素都赋值给一个变量

my_tuple = (1,2,3,4) 

a,b,c,d = my_tuple

print('a = ',a)
print('b = ',b)
print('c = ',c)
print('d = ',d)
# 将元组当中每一个元素都赋值给一个变量
a = 6
b = 8

b,a = a,b
# 交换a,b
print(a,b)

运行结果

a =  1
b =  2
c =  3
d =  4

6 8

2 在对一个元组进行解包时,变量的数量要和元组中元素保持一致
当变量和元组当中的数量不一致时,我们可以在变量前面添加一个,这样变量将会获取元组中剩余的元素
不能加两个**

my_tuple = 10,20,30,40
print(my_tuple,type(my_tuple))
#打印my_tuple以及类型

a,b,*c = my_tuple 
print(a,b,c)
# a,b分别对应10,20,c以列表的格式储存30,40

a,*b,c = my_tuple  
print(a,b,c)
# a,b分别对应10,40,b以列表的格式储存20,30

*a,b,c = my_tuple 
print(a,b,c)
# b,c分别对应30,40,a以列表的格式储存10,20

a,b,*c = [1,2,3,4,5,6,7]
print(a,b,c)
# a,b分别对应1,2,a以列表的格式储存3,4,5,6,7

a,b,*c = 'python java'
print(a,b,c)
# b,c分别对应'p','y',a以列表的格式储存't','h','o','n',' ' ,'j','a','v','a'

运行结果

(10, 20, 30, 40) <class 'tuple'>

10 20 [30, 40]

10 [20, 30] 40

[10, 20] 30 40

1 2 [3, 4, 5, 6, 7]

p y ['t', 'h', 'o', 'n', ' ', 'j', 'a', 'v', 'a']

1.4可变对象

每个对象当中保存了3个数据
1 id(标识)
2 type(类型)
3 value(值)

a = [1,2,3]
print('修改前:',a,id(a))

a[0] = 10 #(改对象)
#通过索引来修改列表
#这个操作是通过变量修改对象里面的值
#这种操作不会改变变量指向的对象
print('修改后:',a,id(a))

a = [4,5,6] #(改变量)
#这个操作是在给变量重新赋值
#这种操作会改变变量所指向的对象
print('修改后:',a,id(a))

b = a
print('修改前:',a,id(a))
print('修改前:',b,id(b))

b[0] = 10
print('修改后:',a,id(a))
print('修改后:',b,id(b))

b = [10,2,3]
print('修改后:',a,id(a))
print('修改后:',b,id(b))

运行结果

修改前: [1, 2, 3] 2425890882888

修改后: [10, 2, 3] 2425890882888#对象未改变
修改后: [4, 5, 6] 2425890027528# 对象改变

修改前: [4, 5, 6] 2425890027528
修改前: [4, 5, 6] 2425890027528#修改前a,b对象相同

修改后: [10, 5, 6] 2425890027528
修改后: [10, 5, 6] 2425890027528#a,b对象未改变

修改后: [10, 5, 6] 2425890027528#a对象未改变
修改后: [10, 2, 3] 2425890882888#b对象改变,b重新分配了对象。

1.5辨别==和is

1 == != 比较的是对象的值是否相等
2 is 和 is not 比较的是对象的id是否相等

a = [1,2,3]
b = [1,2,3]

print(a,b)
print(id(a),id(b))
print(a is b)
print(a == b)

运行结果

[1, 2, 3] [1, 2, 3]
2470484657480 2470483802120
#a,b对象不同

False
True
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
元组解包是指将一个元组或其他可迭代对象的元素分别赋值给多个变量的过程。在Python中,可以使用元组解包来同时赋值多个变量。例如,可以使用以下代码实现元组解包: x = 10 y = 20 print(f'x={x}, y={y}') x, y = y, x print(f'x={x}, y={y}') 在这个例子中,我们将变量x赋值为10,变量y赋值为20。然后,通过元组解包的方式,将变量y的值赋给变量x,将变量x的值赋给变量y。最后,打印出交换后的变量值。输出结果为: x=10, y=20 x=20, y=10 除了元组元组解包还可以用于其他可迭代对象,如列表、字典等。在Python3.5之前,不允许在表达式中使用两个或两个以上的*号。但在Python3.5之后,可以使用*号来解包列表或元组,在字典中使用**号来解包。例如: nums = \[1, 2, 3\] nums1 = \[2, 3, 4\] total = \[*nums, *nums1\] # \[1, 2, 3, 2, 3, 4\] total1 = \[*nums, 3, 4\] # \[1, 2, 3, 3, 4\] total2 = \[1, *nums, 4\] # \[1, 1, 2, 3, 4\] a = (1, 3, 4) b = (3, 3, 4) c = \[*a, *b\] # \[1, 3, 4, 3, 3, 4\] d = (*a, *b) # (1, 3, 4, 3, 3, 4) dict1 = {"a": 1, 'b': 2, 'c': 4} dict2 = {**dict1, 'd': 9} # {'a': 1, 'b': 2, 'c': 4, 'd': 9} 在函数中,元组解包也可以用于接收函数的返回值。例如: def get_coordinates(): return 10, 20 x, y = get_coordinates() print(f'x={x}, y={y}') 在这个例子中,函数get_coordinates()返回一个包含x和y坐标的元组。通过元组解包的方式,将返回的元组的元素分别赋值给变量x和y。最后,打印出变量的值。输出结果为: x=10, y=20 总之,元组解包是一种方便的方式,可以同时赋值多个变量,从而简化代码的编写。 #### 引用[.reference_title] - *1* *3* [Python 进阶 - 元组解包](https://blog.csdn.net/Aaron_neil/article/details/120568590)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【Python入门教程】第58篇 函数进阶之元组解包](https://blog.csdn.net/horses/article/details/122804932)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值