Python每日一练0011

发布时间:2019-06-12 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Python每日一练0011脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

问题

你有一段通过下标访问列表或者元组中元素的代码,但是这样有时候会使得你的代码难以阅读, 于是你想通过名称来访问元素。

解决方案

使用collections.namedtuple 函数,例如我们经常使用一个tuple表示一个坐标点的时候

>>> from collections import namedtuple
>>> Point = namedtuple('Point', ['x', 'y'])
>>> point_1 = Point(x=5, y=6)
>>> print(point_1.x, point_1.y)
5 6

讨论

collections.namedtuple 函数返回的是tuple类型的一个子类,能够支持原生tuple的所有操作

但需要注意的是,当创建了一个namedtuple 后,成员是不能被改变的(这和原生tuple是一致的)

>>> from collections import namedtuple
>>> Point = namedtuple('Point', ['x', 'y'])
>>> point_1 = Point(x=5, y=6)
>>> point_1.x = 6
Traceback (most recent call last):
  File "<stdin>", line 1, in <;module>
AttributeError: can't set attribute

如果想要修改某一成员,只能重新创建一个实例了,可以使用_replace方法

>>> from collections import namedtuple
>>> Point = namedtuple('Point', ['x', 'y'])
>>> point_1 = Point(x=5, y=6)
>>> point_2 = point_1._replace(x=6)
>>> print(point_2)
Point(x=6, y=6)

适当使用namedtuple 会让代码可读性更好,例如从数据库调用中返回了一个很大的元组列表,如果通过下标去操作其中的元素会让代码模糊不清

并且在某些时候可以更节省(比如用namedtuple代替不经常做更新的dict

关于更多关于命名元组见collections.namedtuple

来源

Python CookBook

关注

欢迎关注我的微信公众号python每日一练

Python每日一练0011

脚本宝典总结

以上是脚本宝典为你收集整理的Python每日一练0011全部内容,希望文章能够帮你解决Python每日一练0011所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。