iT邦幫忙

2021 iThome 鐵人賽

DAY 12
1
Software Development

宇宙 69 大魔王的 python 世界系列 第 12

【Day 12】Set 介紹

前言

今天要來介紹一下 Set

Set

  • set 儲存的是 沒有順序性不重複 的資料(會自動刪除重複的元素)

  • 建立 set

    set(){} 來建立,但是 {} 裡面要放東西,不然會被判定為 dict

    s = {1, 2, 3}
    print(type(s))
    x = {}
    print(type(x))
    

    s = {1, 2, 3}
    print(s)
    

    set() 建立

    settt = set(('a', 'b', 'c'))    #注意這裡是兩層括號
    print(settt)
    print(type(settt))
    

  • set 不能有重複元素

    s = {'Red', 'Blue', 'Yellow', 'Red'}    # 只能有一個 'Red' 
    print(s)
    

  • 想知道 set 內有多少元素:用 len() 來看

    s = {'Red', 'Blue', 'Yellow'}
    print(len(s))
    

  • 增加 set 內的元素

    • set.add():新增元素

      s = {'Red', 'Blue', 'Yellow'}
      s.add('Orange')
      print(s)
      

    • set.update():可以把任何可迭代的物件也加到原本set 當中

      s = {'Red', 'Blue', 'Yellow'}
      abcd = {'hello', 'python'}
      s.update(abcd)    #合併另一個 set
      print(s)
      

      s = {'Red', 'Blue', 'Yellow'}
      abcd = ['hello', 'python', 123]
      s.update(abcd)
      print(s)
      

    • set.union:把兩個 set 合併到另一個新的 set,跟 update 的差別是建立一個新的 set 或是改變原本的 set

      set1 = {1, 2, 3}
      set2 = {'a', 'b', 'c'}
      set3 = set1.union(set2)
      print(set3)
      set1.update(set2)
      print(set1)
      

      這兩個「update(), union()」的括號內可以放任何可迭代的物件(list, dic, tuple, set)但是前面一定要是 set 才可以用這兩個函式。

  • 減少 set 內的元素

    • set.remove():刪除元素,若括號內的元素原本的 set 裡沒有會錯誤

      s = {'Red', 'Blue', 'Yellow'}
      s.remove('Red')
      print(s)
      

    • set.discard():也是刪除元素,但是括號內的元素 set 沒有也不會錯誤

      s = {'Red', 'Blue', 'Yellow'}
      s.discard('Red')
      print(s)
      

      s = {'Red', 'Blue', 'Yellow'}
      s.discard('Orange')    #set 內沒有 'Orange' 也不會錯誤
      print(s)
      

    • set.clear:清空 set

      s = {'Red', 'Blue', 'Yellow'}
      s.clear()
      print(s)
      print(type(s))
      

    • del:刪除整個 set

      s = {'Red', 'Blue', 'Yellow'}
      del s
      
    • set.pop():與 list 不同,由於 set 沒有順序性,所以是隨機移除一個 set 內的元素

      s = {'Red', 'Blue', 'Yellow'}
      s.pop()
      print(s)
      

  • loop 把跑一遍 set

    s = {'Red', 'Blue', 'Yellow'}
    for x in s:
        print(x)
    

  • 檢查特定元素是否在 set

    s = {'Red', 'Blue', 'Yellow'}
    print('Red' in s)
    

  • Set Methods

    • set.intersection_update():檢查 set 之間交集(共有)的元素,並把引導的 set 改為只剩交集的元素

      x = {'Red', 'Blue', 'Yellow'}
      y = {'hello', 2, 'Red'}    #共有的只有 'Red'
      x.intersection_update(y)
      print(x)
      

    • set.intersection():檢查 set 之間交集(共有)的元素,並建立一個新的 set

      x = {'Red', 'Blue', 'Yellow'}
      y = {'hello', 2, 'Red'}
      x.intersection_update(y)
      z = x.intersection(y)
      print('set x =', x)
      print('set z =', z)
      

    • set.symmetric_difference_update() set.symmetric_difference():取出 set 之間交集的元素「之外」的元素

      x = {'Red', 'Blue', 'Yellow'}
      y = {'hello', 2, 'Red'}
      x.symmetric_difference_update(y)    #得到的值會蓋過原本的 x
      print('set x =', x)
      

      x = {'Red', 'Blue', 'Yellow'}
      y = {'hello', 2, 'Red'}
      z = x.symmetric_difference(y)    #得到的值給 z 
      print('set z =', z)
      

    • set.difference() set.difference_update():找出該 set 與另一個 set 「不一樣」的元素

      x = {'Red', 'Blue', 'Yellow'}
      y = {'hello', 2, 'Red'}
      z = x.difference(y)    #不會改變 x
      x.difference_update(y)    #會改變 x 所以放後面
      print('set z =', z)
      print('set x =', x)
      

待續...


上一篇
【Day 11】For 迴圈
下一篇
【Day 13】Dictionary 介紹
系列文
宇宙 69 大魔王的 python 世界30

尚未有邦友留言

立即登入留言