Python數(shù)據(jù)結(jié)構(gòu)

數(shù)據(jù)結(jié)構(gòu)與可變性

數(shù)據(jù)結(jié)構(gòu) 可變性 構(gòu)造函數(shù)/類型裝換函數(shù)
數(shù)字 不可變 float/int
字符串 不可變 str/' ' " " ''' '''
列表 可變 list/[ ]
元組 不可變 tuple/( )
字典 可變 dict/{ key:value}
集合 可變 set/{value}

可變性:創(chuàng)建后就不能改變,無法在原處修改,不可變對象的修改是返回一個(gè)新對象

利用類型轉(zhuǎn)換函數(shù)進(jìn)行列表去重
L1=[1,2,3,3,4,4,5,5,5]
L1=list(set(L1))
[1,2,3,4,5]

Python動(dòng)態(tài)類型語言

動(dòng)態(tài)類型語言的核心是:類型沒有記錄在變量名中,而是記錄在被引用的對象中(正好與C語言、C++語言相反)。類型的變換只是讓變量名引用了不同的對象而已。

可變對象與共享引用

由于可變對象支持在原處修改,因此會(huì)出現(xiàn)共享引用,相互影響的問題

L1=[1,2,3,4]
L2=L1
L1 is L2  # True
L1[0]=2
print(L1)    #[2,2,3,4]
print(L2)    #[2,2,3,4]

不可變對象不會(huì)有以上共享引用的問題,因?yàn)樗匈x值和改變都返回源對象的拷貝。
若想消除可變對象的共享引用問題,可用如下兩種賦值方式

#采用分片方式
L1=[1,2,3,4]
L2=L1[:]
L1 is L2    # False       
#使用拷貝模塊
import copy
x=copy.copy(y)
x=copy.deepcopy(y)

索引與分片

分片是左閉右開區(qū)間 [ ),第三個(gè)參數(shù)為步長
負(fù)數(shù)下標(biāo)索引表示倒序

一條簡明法則

可用于多種類型的通用型操作都是以內(nèi)置函數(shù)或表達(dá)式的形式出現(xiàn)的(例如len(),list()),但是類型特定的操作是以方法調(diào)用的形式出現(xiàn)的(例如aString.upper())

元組

1.元組具有不可變性,是一個(gè)常數(shù)生命,但可以與列表轉(zhuǎn)換
2.單個(gè)列表的元組要加逗號(hào)
3.元組的括號(hào)可以省略,因此有些看似是多個(gè)賦值或返回的語句實(shí)際是元組賦值

t=(34,)    #tuple t has only one element
def func(a,b,c):
     a,b,c=1,2,3   #(a,b,c)=(1,2,3)
     return a,b,c   # return (a,b,c)

布爾類型

對象
"spam" True
"" False
[] False
{} False
1 True
0.0 False
None False

True與False不過是整數(shù)1和0以不同形式顯示后的定制版本而已,只是作為關(guān)鍵字顯示而已

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容