1. 程式人生 > 實用技巧 >資料型別總結與分類

資料型別總結與分類

一、可變型別與不可變型別

  可變型別:值發生改變時,記憶體地址不變,即id不發生變化,證明沒有改變原值

  不可變型別:值發生改變時,記憶體地址也跟著改變,即id也發生了變化,證明改變了原值,是產生了新的值

  數字:

    >>> x = 10

    >>> id(x)

    1830448896

    >>> x = 20

    >>> id(x)

    1830448928

    # 值發生了改變,記憶體地址也發生了改變,即id發生了變化,證明該數字型別為不可變型別

  字串: 

    >>> x = "Jy"
    >>> id(x)
    938809263920 
    >>> x = "Ricky"
    >>> id(x)
    938809264088
    # 值發生了變化,記憶體地址也跟著發生了變化,即id也發了變化,證明字串型別為不可變型別

  列表: 

    >>> list1 = ['tom','jack','egon']
    >>> id(list1)
    486316639176
    >>> list1[2] = 'kevin'
    >>> id(list1)
    486316639176
    >>> list1.append('lili')
    >>> id(list1)
    486316639176
    # 列表中的值發生了變化,記憶體地址沒有變化,即id沒有變化,證明列表型別為可變型別

  元組:  

    >>> t1 = ("tom","jack",[1,2])
    >>> t1[0]='TOM' # 報錯:TypeError
    >>> t1.append('lili') # 報錯:TypeError
    # 元組內的元素無法修改,指的是元組內索引指向的記憶體地址不能被修改
    >>> t1 = ("tom","jack",[1,2])
    >>> id(t1[0]),id(t1[1]),id(t1[2])
    (4327403152, 4327403072, 4327422472)
    >>> t1[2][0]=111 # 如果元組中存在可變型別,是可以修改,但是修改後的記憶體地址不變
    >>> t1
    ('tom', 'jack', [111, 2])
    >>> id(t1[0]),id(t1[1]),id(t1[2]) # 檢視id仍然不變
    (4327403152, 4327403072, 4327422472)

    # 元組是不可變型別,元組的值不管如何修改(如果元組中存在列表等),他的記憶體地址是不變化的,即id不會發生變化

  字典:

    >>>dic = {'name':'egon','sex':'male','age':18}
    >>> id(dic)
    4327423112
    >>> dic['age']=19
    >>> dic
    {'age': 19, 'sex': 'male', 'name': 'egon'}
    >>> id(dic)
    4327423112

    # 字典中的值發生了改變,但是記憶體地址沒有變化,即id沒有發生變化,證明字典為可變型別

    

二、資料型別的總結

  

  注:集合沒有放在上面,原因是集合是按照一個整體來進行使用的,不是單個進行使用的,集合主要是運算和去重

    集合其實也是存放多個值的,集合也是可變型別