1. 程式人生 > >python學習筆記三:元組和集合

python學習筆記三:元組和集合

學習python的小夥伴們經常會有這樣一個疑問,既然有列表裡,問什麼還要有元組呢。因為列表是可變的,而元組是不可變的。比如我們經常需要傳入函式的資料是不變的,這時就要用到元組了。

def info(a):
    a[0] = 'haha'
    return a
a = [1,2,3]
info(a)
執行結果:['haha', 2, 3]

b = (1,2,3)
info(b)
執行結果:TypeError: 'tuple' object does not support item assignment

想要改變元組裡的元素,可以先將元組轉換成列表,元素變換之後再轉換成元組,實際上是重新建立了物件。

a = (1,2,3)
b = list(a)
b[0] = 5
a = tuple(b)
print(a)
執行結果:(5, 2, 3)

集合是沒有序列的,而且裡面的元素是唯一的,重複的元素會被自動剔除掉。

建立集合:

  1. 用花括號{}
  2. set()
#建立集合
a = set(['a',2,3])
print(a)
執行結果:{2, 3, 'a'}

b = set('abc')
print(b)
執行結果:{'a', 'b', 'c'}

 集合元素的新增與去除:

a = set(['a',2,3])

#add新增
a.add('tong')#將整個元素新增進來
print(a)
執行結果:{'tong', 2, 3, 'a'}

#update新增
a.update('tong')#將字串拆開新增進來
print(a)
執行結果:{'tong', 2, 3, 'n', 'a', 't', 'o', 'g'}

#集合元素的去除
a.remove('tong')
print(a)
執行結果:{2, 3, 'n', 'a', 't', 'o', 'g'}

集合的成員關係:

a = set('abc')
'b' in a
執行結果:True

集合的交集、並集與差集:

a = set('abc')
b = set('bcd')
print(a&b)#交集
print(a|b)#並集
print(a-b)#差集
執行結果:
{'c', 'b'}
{'d', 'a', 'b', 'c'}
{'a'}

結合集合刪除列表裡面的元素:

a = [1,2,3,1,3]
b = set(a)
print(b)
c = list(b)
print(c)
執行結果:
{1, 2, 3}
[1, 2, 3]

凍結集合:

#凍結集合
a = frozenset('abc')#集合則不可修改
a.add('d')
執行結果:AttributeError: 'frozenset' object has no attribute 'add'