Python基本資料型別 元組和集合

2022-03-02 14:33:02 字數 2280 閱讀 2844

tuple和list非常類似,但是tuple一旦初始化就不能修改。元組採用圓括號表示。

例如:

>>> tuple = (1,2,3)

>>> tuple

(1, 2, 3)

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

tuple的陷阱:當你定義乙個tuple時,在定義的時候,tuple的元素就必須被確定下來。

字典中的鍵必須是唯一的同時不可變的,值則沒有限制。

>>> t = (1,)

>>> t

(1,)

定義的不是tuple,是1這個數!這是因為括號()既可以表示tuple,又可以表示數學公式中的小括號,這就產生了歧義,因此,python規定,這種情況下,按小括號進行計算,計算結果自然是1。所以,只有1個元素的tuple定義時必須加乙個逗號,,來消除歧義。

zip函式構造元組:

>>> zip([1,2,3],[4,5,6])

[(1, 4), (2, 5), (3, 6)]

>>> zip([1,2,3],[4,5,6],["x","y","z","d"])

[(1, 4, 'x'), (2, 5, 'y'), (3, 6, 'z')]

乙個「可變的」tuple:
>>> t = ('a', 'b', ['a', 'b'])

>>> t[2][0] = 'x'

>>> t[2][1] = 'y'

>>> t

('a', 'b', ['x', 'y'])

表面上看,tuple的元素確實變了,但其實變的不是tuple的元素,而是list的元素。tuple一開始指向的list並沒有改成別的list,所以,tuple所謂的「不變」是說,tuple的每個元素,指向永遠不變。即指向'a',就不能改成指向'b',指向乙個list,就不能改成指向其他物件,但指向的這個list本身是可變的!

set和dict類似,也是一組key的集合,但不儲存value。由於key不能重複,所以,在set中,沒有重複的key。

要建立乙個set,需要提供乙個list作為輸入集合:

>>> s = set([1, 2, 3])

>>> s

set([1, 2, 3])

注意,傳入的引數[1, 2, 3]是乙個list,而顯示的只是告訴你這個set內部有1,2,3這3個元素,顯示的順序也不表示set是有序的。

重複元素在set中自動被過濾:

>>> s = set([1, 1, 2, 2, 3, 3])

>>> s

set([1, 2, 3])

通過add(key)方法可以新增元素到set中,可以重複新增,但不會有效果:

>>> s = set([1, 2, 3, 5, 6, 7, 9])

>>> s

set([1, 2, 3, 5, 6, 7, 9])

>>> id(s)

140415072840960

>>> s.add(4)

>>> id(s)

140415072840960

>>> s

set([1, 2, 3, 4, 5, 6, 7, 9])

通過remove(key)方法可以刪除元素:

>>> s.remove(4)

>>> s

set([1, 2, 3, 5, 6, 7, 9])

set可以看成數學意義上的無序和無重複元素的集合,因此,兩個set可以做數學意義上的交集、並集等操作:

>>> s1 = set([1, 2, 3])

>>> s2 = set([2, 3, 4])

# 交集

>>> s1 & s2

set([2, 3])

# 並集

>>> s1 | s2

set([1, 2, 3, 4])

# 差集

>>> s1 - s2

set([1])

# 對稱差集,不同時出現在兩個集合中的元素

>>> s1 ^ s2

set([1, 4])

set和dict的唯一區別僅在於沒有儲存對應的value,但是,set的原理和dict一樣,所以,同樣不可以放入可變物件,因為無法判斷兩個可變物件是否相等,也就無法保證set內部「不會有重複元素」。

set 中的方法

Python基本資料型別之元組

1.元組的概念 2.元組的定義 3.元組的訪問t 1,2,3,4,5,6,7 print t 2 輸出34.元組修改 5.命名元組from collections import namedtuple point namedtuple point a b point point 1,2 print p...

Python基本資料型別之元組

1.元組的概念 2.元組的定義 3.元組的訪問t 1,2,3,4,5,6,7 print t 2 輸出34.元組修改 5.命名元組from collections import namedtuple point namedtuple point a b point point 1,2 print p...

Python基本資料型別之元組

1.元組的概念 2.元組的定義 3.元組的訪問t 1,2,3,4,5,6,7 print t 2 輸出34.元組修改 5.命名元組from collections import namedtuple point namedtuple point a b point point 1,2 print p...