亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python數(shù)據(jù)類型可變與不可變深入分析

 更新時(shí)間:2022年06月09日 15:37:41   作者:anne199534  
這篇文章主要為大家介紹了python數(shù)據(jù)類型可變與不可變深入分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

一.可變類型與不可變類型的特點(diǎn)

1.不可變數(shù)據(jù)類型

不可變數(shù)據(jù)類型在第一次聲明賦值聲明的時(shí)候, 會(huì)在內(nèi)存中開辟一塊空間, 用來存放這個(gè)變量被賦的值,  而這個(gè)變量實(shí)際上存儲(chǔ)的, 并不是被賦予的這個(gè)值, 而是存放這個(gè)值所在空間的內(nèi)存地址, 通過這個(gè)地址, 變量就可以在內(nèi)存中取出數(shù)據(jù)了. 所謂不可變就是說, 我們不能改變這個(gè)數(shù)據(jù)在內(nèi)存中的值, 所以當(dāng)我們改變這個(gè)變量的賦值時(shí), 只是在內(nèi)存中重新開辟了一塊空間, 將這一條新的數(shù)據(jù)存放在這一個(gè)新的內(nèi)存地址里, 而原來的那個(gè)變量就不在引用原數(shù)據(jù)的內(nèi)存地址而轉(zhuǎn)為引用新數(shù)據(jù)的內(nèi)存地址了.

舉例子:

>>> x = 18
>>> id(x)
4497811200
>>> id(18)
4497811200
>>> x = 19 
>>> id(x)
4497811232
>>> id(18)
4497811200
>>> y = 18
>>> id(y)
4497811200
>>>

 一開始x = 18,開辟一塊地址為4497811200的內(nèi)存,即18對(duì)應(yīng)的地址為4497811200,后來x = 19 ,重新開辟一塊地址為4497811232的內(nèi)存來放19,可以看到不變的意思是指18,和19在內(nèi)存中的地址不會(huì)改變,將18賦值給y時(shí),y指向的地址即為4497811200。

2.可變數(shù)據(jù)類型

結(jié)合不可變數(shù)據(jù)類型,可變數(shù)據(jù)類型就很好理解來,可變數(shù)據(jù)類型是指變量所指向的內(nèi)存地址處的值是可以被改變的。

>>> x = [1,2,3]
>>> id(x)
4501838920
>>> y = [1,2,3]
>>> z = [1,2,3]
>>> id(y)
4501838600
>>> id(z)
4501838664

從另外一個(gè)角度來看:

可變類型:當(dāng)該數(shù)據(jù)類型的對(duì)應(yīng)變量的值發(fā)生了改變,那么它對(duì)應(yīng)的內(nèi)存地址也會(huì)發(fā)生改變,對(duì)于這種數(shù)據(jù)類型,就稱不可變數(shù)據(jù)類型。

可變數(shù)據(jù)類型:當(dāng)該數(shù)據(jù)類型的對(duì)應(yīng)變量的值發(fā)生了改變,那么它對(duì)應(yīng)的內(nèi)存地址不發(fā)生改變,對(duì)于這種數(shù)據(jù)類型,就稱可變數(shù)據(jù)類型。

#a的值改變了,a對(duì)應(yīng)的內(nèi)存地址也改變了
>>> a=1
>>> id(a)
4497810656
>>> a = 2
>>> id(2)
4497810688
#直接對(duì)a操作,相當(dāng)于拷貝了一份a的值,在其他內(nèi)存地址操作,a的值不變
>>> a+1
3
>>> id(a)
4497810688
>>> a
2
#b的值改變了,b對(duì)應(yīng)的內(nèi)存地址不變,第一次給b賦值的時(shí)候,給b劃分一塊內(nèi)存空間,該空間就不變了
>>> b = [1,2,3]
>>> id(b)
4501839496
#直接對(duì)b操作,b的值改變,b指向的內(nèi)存空間不變
>>> b.append(4)
>>> id(b)
4501839496
>>> b
[1, 2, 3, 4]
>>>

二.哪些是可變類型哪些是不可變類型

不可變:Number(數(shù)字)、String(字符串)、Tuple(元組)。

#整型
a = 1
print(id(a), type(a))
a = 2
print(id(a), type(a))
# 4361254304 <class 'int'>
# 4361254336 <class 'int'>
#字符串
b = 'anne'
print(id(b),type(b))
b = 'anne1995'
print(id(b),type(b))
# 4363638744 <class 'str'>
# 4363684784 <class 'str'>
#元組
c1 = ['1','2']
c = (1,2,c1)
print(c,id(c),type(c))
c1[1] = 'djx'
print(c,id(c),type(c))
# (1, 2, ['1', '2']) 4363948248 <class 'tuple'>
# (1, 2, ['1', 'djx']) 4363948248 <class 'tuple'>

可以變:Set(集合)、List(列表)、Dictionary(字典)。

#集合
s = {1, 'd', '34', '1', 1}
print(s, type(s), id(s))
s.add('djx')
print(s, type(s), id(s))
# {1, '1', 'd', '34'} <class 'set'> 4401385256
# {1, '1', '34', 'd', 'djx'} <class 'set'> 4401385256
#列表
list = [1,'q','qwer',True]
print(list,type(list),id(list))
list.append('djx')
print(list,type(list),id(list))
# [1, 'q', 'qwer', True] <class 'list'> 4401113608
# [1, 'q', 'qwer', True, 'djx'] <class 'list'> 4401113608
#字典
tuple = (1)
dic = {1:2}
d = { tuple:1,'key2':'djx','key3':'li'}
print(d,type(d),id(d))
d['key4'] = 'haha'
print(d,type(d),id(d))
# {1: 1, 'key2': 'djx', 'key3': 'li'} <class 'dict'> 4401075976
# {1: 1, 'key2': 'djx', 'key3': 'li', 'key4': 'haha'} <class 'dict'> 4401075976

注意:此時(shí)元組的值發(fā)生了變化而內(nèi)存地址沒變,但我們依然稱元組為不可變類型,為什么呢?其實(shí)改的是元組中的列表,列表是可變類型,改變了值后地址依然不變。但是元組的定義就是不可變的,

元組被稱為只讀列表,即數(shù)據(jù)可以被查詢,但不能被修改。

以上就是python數(shù)據(jù)類型可變與不可變深入分析的詳細(xì)內(nèi)容,更多關(guān)于python可變不可變數(shù)據(jù)類型的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • pandas對(duì)指定列進(jìn)行填充的方法

    pandas對(duì)指定列進(jìn)行填充的方法

    下面小編就為大家分享一篇pandas對(duì)指定列進(jìn)行填充的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • 超實(shí)用的 10 段 Python 案例

    超實(shí)用的 10 段 Python 案例

    Python是目前最流行的語言之一,它在數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)、web開發(fā)、腳本編寫、自動(dòng)化方面被許多人廣泛使用。它的簡(jiǎn)單和易用性造就了它如此流行的原因。今天這篇文章就給大家分享 10 段超級(jí)有用的 Python 案例,需要的朋友可以參考一下
    2021-09-09
  • 如何讓PyQt5中QWebEngineView與JavaScript交互

    如何讓PyQt5中QWebEngineView與JavaScript交互

    這篇文章主要介紹了如何讓PyQt5中QWebEngineView與JavaScript交互,幫助大家更好的理解和學(xué)習(xí)PyQt5框架,感興趣的朋友可以了解下
    2020-10-10
  • 使用BeautifulSoup和Pandas進(jìn)行網(wǎng)頁數(shù)據(jù)抓取與清洗處理

    使用BeautifulSoup和Pandas進(jìn)行網(wǎng)頁數(shù)據(jù)抓取與清洗處理

    在數(shù)據(jù)分析和機(jī)器學(xué)習(xí)的項(xiàng)目中,數(shù)據(jù)的獲取,清洗和處理是非常關(guān)鍵的步驟,下面我們就來講講如何利用Python中的Beautiful Soup庫進(jìn)行這樣的操作吧
    2025-02-02
  • Python利用PyExecJS庫執(zhí)行JS函數(shù)的案例分析

    Python利用PyExecJS庫執(zhí)行JS函數(shù)的案例分析

    這篇文章主要介紹了Python利用PyExecJS庫執(zhí)行JS函數(shù),本文通過案例分析給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Python數(shù)據(jù)可視化之分析熱門話題“丁克家庭都怎么樣了”

    Python數(shù)據(jù)可視化之分析熱門話題“丁克家庭都怎么樣了”

    今天小編就以一個(gè)數(shù)據(jù)分析師的視角來向大家講述一下年輕人群體對(duì)于丁克的態(tài)度以及那些丁克家庭他們的想法是怎么樣的?他們是否有過后悔當(dāng)初的決定,需要的朋友可以參考下
    2021-06-06
  • Scrapy將數(shù)據(jù)保存到Excel和MySQL中的方法實(shí)現(xiàn)

    Scrapy將數(shù)據(jù)保存到Excel和MySQL中的方法實(shí)現(xiàn)

    本文主要介紹了Scrapy將數(shù)據(jù)保存到Excel和MySQL中的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 讓Python代碼更快運(yùn)行的5種方法

    讓Python代碼更快運(yùn)行的5種方法

    這篇文章主要介紹了讓Python代碼更快運(yùn)行的5種方法,本文分別介紹了PyPy、Pyston、Nuitka、Cython、Numba等開源軟件,可以提升Python的運(yùn)行效率,需要的朋友可以參考下
    2015-06-06
  • 基于Python測(cè)試程序是否有錯(cuò)誤

    基于Python測(cè)試程序是否有錯(cuò)誤

    這篇文章主要介紹了基于Python測(cè)試程序是否有錯(cuò)誤,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • python深度學(xué)習(xí)借助多標(biāo)簽分類器進(jìn)行對(duì)抗訓(xùn)練

    python深度學(xué)習(xí)借助多標(biāo)簽分類器進(jìn)行對(duì)抗訓(xùn)練

    這篇文章主要為大家介紹了python深度學(xué)習(xí)中如何借助多標(biāo)簽分類器進(jìn)行對(duì)抗訓(xùn)練,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-01-01

最新評(píng)論