Python拆包

Python拆包

拆包

拆包就是将一个对象拆为多个对象,拆包实际上可以应用到任何可迭代对象上,唯一的硬性要求是,被可迭代对象中的元素数量必须要跟接受这些元素的元组的空档数一致。除非我们用 * 来表示忽略多余的元素。带*的变量返回列表。

列表拆包拆包:*在最后

my_list = [1,2,3,4,5,6,7]
a,b,c,*d = my_list
print(id(my_list))
print(a,id(a))
print(b,id(b))
print(c,id(c))
print(d,id(d))
2501524670664
1 140717351068304
2 140717351068336
3 140717351068368
[4, 5, 6, 7] 2501524152456

可以看到,使用拆包将列表分为几个对象

*在中间

my_list = [1,2,3,4,5,6,7]
a,b,*c,d = my_list
print(id(my_list))
print(a,id(a))
print(b,id(b))
print(c,id(c))
print(d,id(d))
2501525132232
1 140717351068304
2 140717351068336
[3, 4, 5, 6] 2501524050504
7 140717351068496

*在开头

my_list = [1,2,3,4,5,6,7]
*a,b,c,d = my_list
print(id(my_list))
print(a,id(a))
print(b,id(b))
print(c,id(c))
print(d,id(d))
2501525134024
[1, 2, 3, 4] 2501524247688
5 140717351068432
6 140717351068464
7 140717351068496

可以看到当列表个数大于拆包所用的变量个数时,带*号的会多匹配。打个比方,my_list就是一堆萝卜,而使用的变量就是萝卜坑,那么萝卜坑就有了大小,不带 * 的萝卜坑比较小,只能容纳一个萝卜,也就是一个元素,而带 * 的罗比坑比较大,能够容纳所有放置在不带 * 的萝卜坑之外的萝卜。

元组拆包

my_tuple = (1,2,3,4,5,6,7)
*a,b,c,d = my_tuple
print(id(my_tuple))
print(a,id(a))
print(b,id(b))
print(c,id(c))
print(d,id(d))
2501523511192
[1, 2, 3, 4] 2501524669704
5 140717351068432
6 140717351068464
7 140717351068496

字典拆包

my_dict = {'a' : 1,'b' : 2,'c' : 3,'d' : 4,'e' : 5 }
a,*b = my_dict
print(id(my_dict))
print(a,id(a))
print(b,id(b))

2501526471880
a 2501447465032
['b', 'c', 'd', 'e'] 2501524137672

字符串拆包

my_str = 'abcdefghi'
a,b,*c = my_str
print(id(my_str))
print(a,id(a))
print(b,id(b))
print(c,id(c))

2501523531504
a 2501447465032
b 2501476061792
['c', 'd', 'e', 'f', 'g', 'h', 'i'] 2501524155208

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值