更安全的元組-Python基礎前傳(8)

18世紀上半葉傑出的啓蒙思想家孟德斯鳩在《論法的精神》提到:


“一切有權力的人都容易濫用權力,這是萬古不易的一條經驗。有權力的人使用權力一直到遇有界限的地方方纔休止。因此,要防止濫用權力,就必須以權力約束權力。”


上次分享,jacky分享了列表,由於列表太過強大,Python的作者覺得這樣似乎不妥,於是發明的列表的”表弟”-元組;


文:朱元祿(jacky)

(一)設計元組的意義

  • 元組(tuple)和列表(list)非常類似,但是元組一旦初始化就不能修改,比如同樣是列出名字:>>> name = (‘jacky’, ‘zhuyuanlu’, ‘andy’),現在,name這個tuple不能變了,它也沒有append(),insert()這樣的方法。其他獲取元素的方法和list是一樣的,你可以正常地使用name[0],name[-1],但不能賦值成另外的元素;或者說,jacky說列表有增刪改查四個功能,元組不允許修改,那元組的功能就只有查,沒有增刪改,這樣把思路捋清就非常簡單了;

(二)能用元組就不用列表

  • 不可變的tuple有什麼意義?因爲tuple不可變,所以代碼更安全。如果可能,能用tuple代替list就儘量用tuple。

(三)元組的陷阱

  • 當你定義一個tuple時,在定義的時候,tuple的元素就必須被確定下來,比如:

>>> t = (1, 2)>>> t
(1, 2)
如果要定義一個空的tuple,可以寫成():>>> t = ()>>> t
()
但是,要定義一個只有1個元素的tuple,如果你這麼定義:>>> t = (1)>>> t1定義的不是tuple,是1這個數!這是因爲括號()既可以表示tuple,又可以表示數學公式中的小括號,這就產生了歧義,因此,Python規定,這種情況下,按小括號進行計算,計算結果自然是1。

所以,只有1個元素的tuple定義時必須加一個逗號,,來消除歧義:>>> t = (1,)>>> t
(1,)
Python在顯示只有1個元素的tuple時,也會加一個逗號,,以免你誤解成數學計算意義上的括號。
  • 咦,元組的功能沒說呢?前面已經說過元組是更安全的列表,那麼列表查的操作,元組都有,列表查的操作都有什麼呢?請參見上回《5分鐘記住列表的使用功能-Python基礎前傳(7)》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章