你有一段通過下標訪問列表或者元組中元素的**,但是這樣有時候會使得你的**難以閱讀, 於是你想通過名稱來訪問元素。
使用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)56
複製**
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 2018.6.5 有個目錄,裡面是你自己寫過的程式,統計一下你寫過多少行 包括空行和注釋,但是要分別列出來 coding utf 8 import re import glob defcodecolletion path filelist glob.glob path p...
Python每日一練
人生苦短,我用python 2018.6.13 最近事情有點多,有幾天沒寫了,正好最近需要統計一下各組排名,也就拿python代替手工了 各組給出其他組的排名,統計每個組最終的得分,第一名為0.5,第二名0.4,以此類推。coding utf 8 groups 3,2,5,4,6 1,3,5,6,4...
Python每日一練0002
如何序列化輸出元素包含字串元組的字串元組 好繞 舉個例子 zoo1 monkey elephant zoo2 python zoo1 將zoo2輸出為python,monkey,elephant容易想到使用join 函式,但join 函式要求元素必須都是字串型別,否則會丟擲typeerror錯誤 z...