1. 程式人生 > >DAY6 元組、字典與集合

DAY6 元組、字典與集合

不可 數據 mce 對象 type default 擁有 bsp 有一個

一、元組

  定義:t1 = (1, 2) # t1 = tuple((1,2))

  特點:有序存儲、可存放多個數據、不可變(內部可以包含可變對象,可變對象已久可變)

  應用場景:將不允許操作的列表可以轉化為元組,將允許操作的元組轉化為列表

  1.元組的定義

    t1 = () # t1 = tuple()

    print(t1,type(t1)) # () <class ‘tuple‘>

   1.1 tuple() # 參數為for可以循環的對象(可叠代對象)
   例如:t2 = tuple("123")
      print(t2, type(t2)) # (‘1‘, ‘2‘, ‘3‘) <class ‘tuple‘>


      t3 = tuple([1, 2, 3])
      print(t3, type(t3)) # (1, 2, 3) <class ‘tuple‘>

      t4 = tuple((7, 8, 9))

      print(t4, type(t4)) # (7, 8, 9) <class ‘tuple‘>

   1.2 定義一個只有一個元素的元組

      t1 = tuple(1, )

      t1 = tuple([1])

  2.元組的操作    

    1.索引取值
    t = (1, 2, 3, 2, 3, 2)
    print(t[1])


    print(t[-2])

    2.切片
    nt = t[:-1:]

    3.長度(item元素個數)
    print(len(t))

    4.元組內置方法
    print(t.count(2)) # 該數據集合可以存放相同數據
    print(t.index(2, 0, 3))

二、字典

  定義:d1 = {‘a‘: 10, ‘b‘: 20} # d1 = dict({‘a‘: 10, ‘b‘: 20})

  特點:無序,存放多個值,可變 => 通過key取值

  1.聲明

    dict的key:可以為所以不可變類型:int float tuple str bool None, 一般就采用字符串

    dict的value:可以為所以數據類型
    key具有唯一性(重復會覆蓋舊值),value可以重復

  2.字典的增刪改查

    字典無序存儲數據,無索引與切片,用key來取值

    2.1 增、改

      d1[key] = value: key存在就是改,不存在就是增

      update({‘a‘: 100, ‘c‘: 300}): key有更新,無新增

    2.2 查  

      d1[key]: 取,如果key不存在就報錯,所以用get(key, defalut)

    2.3 刪

      pop(key): 根據key刪且返回對應value

  3.get取值

    dic = {‘a‘: 10, ‘b‘: 20}
    print(dic[‘c‘]) # KeyError
    res = dic.get(‘c‘) # 擁有默認值,None,可以避免錯誤
    print(res) # None
    res = dic.get(‘d‘, ‘key不存在‘) # 可以自定義默認值
    print(res) # key不存在

  4.復制

    newDic = dic.copy()

    print(newDic)

    淺copy:只做第一層copy,內部的成員地址還是原來的地址

  5.隨機刪除

    dic.popitem()

    返回值是(key,value)

  6.定義一個空字典

    第一個參數:keys:list|tuple|str,第二個參數:統一的默認value

    d10 = {}.fromkeys([‘a‘, ‘b‘, ‘c‘], ‘‘)
    print(d10) # {‘a‘: ‘‘, ‘b‘: ‘‘, ‘c‘: ‘‘}

  7.

    key存在,不操作,不存在設置key=default

    dic.setDefault(key, default)

三、集合set

  1.定義

    s1 = set() # {}代表空字典,用set()來創建空集合

   s2 = set({1, 2, 3}) 

  2.重點:數據具有唯一性
    1.單列數據集合:str,list,tuple,set 雙列:dict
    2.無序存儲:無key無index,無法取值
    3.可變數據類型,內部可以存放任意類型數據,但數據具有唯一性

  3.內置方法與使用 - 集合間的運算 (& | ^ - > < ==)

    p_set = {‘a‘, ‘b‘, ‘c‘, ‘egon‘}

    l_set = {‘x‘, ‘y‘, ‘z‘, ‘egon‘}

   3.1交集 &
    res = p_set & l_set
    print(res)
    res = p_set.intersection(l_set)
    print(res) # {‘egon‘}

   3.2並集
    res = p_set | l_set
    print(res)
    res = p_set.union(l_set)
    print(res) # {‘z‘, ‘c‘, ‘y‘, ‘x‘, ‘b‘, ‘a‘, ‘egon‘}

   3.3差集
    res = p_set - l_set
    print(res) # {‘a‘, ‘b‘, ‘c‘}
    res = l_set.difference(p_set)
    print(res) # {‘x‘, ‘z‘, ‘y‘}

   3.4對稱差集
    res = p_set ^ l_set
    print(res)
    res = p_set.symmetric_difference(l_set)
    print(res) # {‘y‘, ‘a‘, ‘b‘, ‘x‘, ‘z‘, ‘c‘}

  3.5 增、刪

    1.添加

    s = set()
    s.add(‘abc‘)
    s.add(‘xyz‘)
   
 2.刪

     2.1 res = s.pop() # 隨機刪除一個ele元素

     2.2 if ‘xyz‘ in s:

         s.remove(‘xyz‘) # 有ele刪除,無ele拋異常

  4.了解

    sup_set = {1, 2, 3, 4, 5}
    sub_set = {1, 2, 3}
    temp_set = {3, 2, 1}
    flag_set = {7, 8, 9}

    print(sup_set > sub_set) # True

    print(sup_set < sub_set) # False
    print(temp_set == sub_set) # True
    # 兩個set是否沒有交集
    res = flag_set.isdisjoint(temp_set) # True

  

    

      

DAY6 元組、字典與集合