阿小信大人的头像
做你说过的,说你能做的 阿小信大人

namedtuple命名元组2014-09-02 04:33

普通元组的常见缺陷是需要使用数字下标访问元素,当元素个数太多时就会引起混淆,命名元组可以解决这个烦恼。

>>> from collections import namedtuple
>>> InetAddr = namedtuple('ia',['host', 'port'])
>>> a = InetAddr('ashin.sinaapp.com','80')
>>> a
ia(host='ashin.sinaapp.com', port='80')
>>> a.host
'ashin.sinaapp.com'
>>> a.port
'80'
>>> type(a)
<class '__main__.ia'>
>>> isinstance(a,tuple)
True
>>>

如果定义仅用作数据结构的对象的话,使用命名元组代替类更好。

>>> t=namedtuple('test','ashin chen')
>>> t
<class '__main__.test'>
>>> t.ashin
<property object at 0x01AFEF30>
>>> t.chen
<property object at 0x01AFEF60>
>>> t.ashin=1
>>> t.chen=2
>>> t.chen
2
>>> t.ashin
1
>>>

命名元组的优势:能够高效的使用内存,并且至此解压(for a,b,c in t)等元组操作。 缺点:属性访问没有类高效,比如访问t.ashin的速度会比类实例访问慢两倍。

如果您觉得从我的分享中得到了帮助,并且希望我的博客持续发展下去,请点击支付宝捐赠,谢谢!

若非特别声明,文章均为阿小信的个人笔记,转载请注明出处。文章如有侵权内容,请联系我,我会及时删除。

#Python#   阅读[2531] 评论[0]

你可能也感兴趣的文章推荐

本文最近访客

网友157.*.*.140[Redmond]2021-12-05 09:47
网友216.*.*.226[Seattle]2021-12-05 09:30
网友157.*.*.182[Redmond]2021-12-05 09:30
网友77.*.*.5[火星]2021-12-05 09:15

发表评论