python for 高级用法_python 序列的高级用法

上一篇文章中,我们介绍了元组作为不可变列表的用法,但一个同样重要的用法是把元组用作信息的记录

>>> city, year, pop, chg, area = ('Tokyo', 2003, 32450, 0.66, 8014)

可以看到,上面的例子中只用一行代码,就让元组中的每个元素都被赋值给不同的变量,这个过程就被称为元组拆包

通过元组拆包实现变量交换

下面就是一个通过元组拆包实现的十分优雅的变量交换操作:

>>> b, a = a, b

除了给变量赋值,只要可迭代对象的元素数与元组中元素数量一致,任何可迭代对象都可以用元组拆包来赋值

可迭代对象的拆包

可以用 * 运算符将任何一个可迭代对象拆包作为方法的参数:

>>> divmod(20, 8)

(2, 4)

>>> t = (20, 8)

>>> divmod(*t)

(2, 4)

不确定拆分结果的获取

Python 允许被拆包赋值的一系列变量中最多存在一个以 * 开始的变量,他用来接收所有拆包赋值后剩下的变量

*args 用来获取不确定参数是最经典的写法了

>>> a, b, *rest = range(5)

>>> a, b, rest

(0, 1, [2, 3, 4])

元组拆包的嵌套

元组拆包是可以嵌套的,只要接受元组嵌套结构符合表达式本身的嵌套结构,Python 就可以做出正确的处理

具名元组 -- collections.namedtuple

具名元组就是带有名字和字段名的元组,他用元组模拟了一个简易的类

我们通过 collections.namedtuple 方法就可以构建一个具名元组:

>>> from collections import namedtuple

>>> City = namedtuple('City', 'name country population coordinates')

>>> tokyo = City('Tokyo', 'JP', 36.933, (35.689722, 139.691667))

>>> tokyo

City(name='Tokyo', country='JP', population=36.933, coordinates=(35.689722, 139.691667))

本质上,具名元组仍然是元组用于记录元素的一种用法

具名元组的属性和方法

除了所有元组具有的属性和方法,具名元组还具有下面三个有用的属性和方法【_fields】 -- 类属性,包含具名元组所有字段名称的元组

【_make()】 -- 通过接受一个可迭代对象生成类实例,如 City._make(*delphi_data)

【_asdict()】 -- 把具名元组以 collections.OrderedDict 类型返回,可以用于友好的展示

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值