python解包

python解包

出处:python3-cookbook

将序列分解为单独的变量

场景:存在一个可迭代对象,如何将其中的元素赋值给N个变量?

解包就是将一个可迭代序列拆解,python支持通过简单的赋值操作将一个可迭代对象拆解为多个单独的变量(变量个数为len(可迭代obj))

> p = (4, 5)
> x, y = p
> x
4
> y
5
>
> data = ['ACME', 50, 91,1m (2012, 12, 21)]
> name, shares, price, date = data
> name
'ACME'
> date
(2012, 12, 21)
> year, month, day = date
> year
2012
> month
12
> day
21

其实python函数返回值默认是元组,平时大家都在有意无意中使用过解包

def foo():
	return 1, 2  # 等于return (1, 2)
a, b = foo()  # 就是将元组(1, 2)解包
> a
1
> b
2

有时候只想得到序列中的某些值,可以使用_占位符遗弃不需要的元素

> data = [ 'ACME', 50, 91.1, (2012, 12, 21) ]
> _, shares, price, _ = data
> shares
50
> price
91.1

解压可迭代对象赋值给多个变量

场景:怎么从可迭代对象中解压出N个对象,前提是N为可变的

python的星号表达式可以解决此问题,*通配符可以表示任意个数的变量,*变量已经是一个列表了,不需要list()手动转换

> iters = [1, 2, 3, 4, 5, 6, 7, 8, 9]
> first, *mid, last = iters
> first
1
> last
9
> mid
[2, 3, 4, 5, 6, 7, 8]

如果你想将解压出来的一些元素丢弃,直接使用*_占位即可丢弃任意个数的元素

> strs = "abcdefg"
> a, *_, g = strs
> a
"a"
> g
"g"
  • 16
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值