Python-數據類型內置方法(2)

元組(tuple)

元組是不可變的列表,只能夠存不能夠修改,早起元組類型佔用內存小app

定義:tup = tuple((1,2,3))code

內置方法:

  • 索引取值orm

    name_tuple = ("qinyj","age",18)
    print(name_tuple[0])
  • 索引切片對象

    name_tuple = ("qinyj","age",18)
    print(name_tuple[0:2])
  • 長度len索引

    name_tuple = ("qinyj","age",18)
    print(len(name_tuple))
  • 循環內存

    name_tuple = ("qinyj","age",18)
    for i in name_tuple:
        print(i)
  • count字符串

    name_tuple = ("qinyj","age",18)
    print(name_tuple.count("qinyj"))
  • indexget

    name_tuple = ("qinyj","age",18)
    print(name_tuple.index("qinyj"))

有序但不可變類型。it

字典(dict)

定義:dic = dict()

內置方法:

優先掌握:

  • 按key存取值:可存可取(可查可修改)

    dic = {'a': 1, 'b': 2}
    print(f"first dic['a']: {dic['a']}")
    
    dic['a'] = 3
    print(f"second dic['a']: {dic['a']}")
  • 長度len

    dic = {'a': 1, 'b': 2}
    print(len(dic))
  • 成員運算

    dic = {'a': 1, 'b': 2}
    print("a" in dic)
  • 刪除del、pop指定元素

    dic = {'a': 1, 'b': 2}
    del dic["a"]
    print(dic)
  • keys/values/items

    dic = {'a': 1, 'b': 2}
    print(dic.keys())
    print(dic.values())
    print(dic.items())
    
    for i,k in dic.items:
        print(i,k)
  • fo 循環:循環的是key

  • get:查指定元素,若是沒有返回None,可設默認值

須要掌握

  • get
  • pop刪除
  • popitem刪除末尾鍵值對
  • update 擴展字典。相似list 中extend方法
  • formkeys
  • setdefault 有指定key不會改變值;無指定key則改變值

集合(set)

優先掌握

  1. 長度len
  2. 成員運算in和not in
  3. |並集、union
  4. &交集、intersection
  5. -差集、difference
  6. ^對稱差集、symmetric_difference
  7. ==
  8. 父集:>、>= 、issuperset
  9. 子集:<、<= 、issubset

深淺拷貝

拷貝(賦值)

>>> lt1 = ["a","b","c"]
>>> print(id(lt1))
43366216
>>> lt2 = lt1
>>> print(id(lt2))
43366216

>>> lt1.append("d")
>>> print(lt1)
["a","b","c","d"]

>>> print(lt2)
["a","b","c","d"]


# 43366216  內存地址同樣。兩個變量指向同一個內存地址,一個變,另外一個也改變

若是lt2 是lt1的拷貝對象,lt1 內部的任何數據類型的元素變化,lt2內部的元素也會跟着變化。由於可變類型值變id不變。

淺拷貝

>>> import copy
>>> lt1 = ["a","b","c",["d","e"]]
>>> print(id(lt1))
43434056
>>>
>>> lt2 = copy.copy(lt1)
>>> print(id(lt2))
43449224

>>> lt1[-1].append("f")
>>> print(lt1)
['a', 'b', 'c', ['d', 'e', 'f']]

>>> print(lt2)
['a', 'b', 'c', ['d', 'e', 'f']]
>>>

若是lt2是lt1的淺拷貝對象,lt1內部的不可變元素髮生了變化,lt2不變,

若是lt1內部的可變元素髮生了變化,lt2也跟着改變。

深拷貝

>>> import copy
>>> lt1 = ["a","b","c",["d","e"]]
>>> print(id(lt1))
43434440

>>> lt2 = copy.deepcopy(lt1)
>>> print(id(lt2))
43447368

>>> lt1[-1].append("f")

>>> print(lt1)
['a', 'b', 'c', ['d', 'e', 'f']]

>>> print(lt2)
['a', 'b', 'c', ['d', 'e']]
>>>

若是lt2是lt1的深拷貝對象,lt1內部的任何元素髮生了變化,lt2不會跟着改變。

  • 拷貝

    若是lt2 是lt1的拷貝對象,lt1 內部的任何數據類型的元素變化,lt2內部的元素也會跟着變化。由於可變類型值變id不變。

  • 淺拷貝

    若是lt2是lt1的淺拷貝對象,lt1內部的不可變元素髮生了變化,lt2不變,

    若是lt1內部的可變元素髮生了變化,lt2也跟着改變。

  • 深拷貝

    若是lt2是lt1的深拷貝對象,lt1內部的任何元素髮生了變化,lt2不會跟着改變。

總結

存值個數

存值個數 數據類型
單個值 數字、字符串
多個值 列表、元組、字典、集合

有序 or 無序

有序 or 無序 數據類型
有序 字符串、列表、元組
無序 數字、字典、集合

可變 or 不可變

可變 or 不可變 數據類型
可變 列表、字典、集合
不可變 數字、元組、字符串

訪問類型

訪問類型 數據類型
直接訪問 數字
順序訪問 字符串、列表、元組
key值訪問 字典

拷貝/淺拷貝/深拷貝 都是針對可變類型數據而言。

相關文章
相關標籤/搜索