python每日一学_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 "", line 1, in 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每日一学_Python每日一练0011的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql实现日志系统_基于Hadoop
- 下一篇: 怎么在电脑上看bios版本 查看电脑BI