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

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

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

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

利用類(lèi)型轉(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)類(lèi)型語(yǔ)言

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

可變對(duì)象與共享引用

由于可變對(duì)象支持在原處修改,因此會(huì)出現(xiàn)共享引用,相互影響的問(wè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]

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

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

索引與分片

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

一條簡(jiǎn)明法則

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

元組

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

布爾類(lèi)型

對(duì)象
"spam" True
"" False
[] False
{} False
1 True
0.0 False
None False

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

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

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

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