Python入門學習之資料結構

來源:互聯網
上載者:User
一 變數

  python中的變數與c/c++中的變數不同。在c/c++中,變數的本質就是記憶體的地址,但在python中,當我們定義一個變數並賦值時,如下: 

a='ABC'

  python的解譯器幹了兩件事情:(1)在記憶體中建立一個‘ABC’的字串;(2)在記憶體中再建立一個名為a的變數,並把它指向‘ABC’。也就是說,對於python佔用的記憶體比c/c++中要多。這裡一定要正確python中對定義變數的處理。

二 編碼

  對於編碼的問題,有曆史因素在裡面。由於電腦最初是在美國製造,故最早只是把常用的127個字元編碼到了電腦裡,也就是ASCII碼。但是在後來的發展中,還需要處理像中文這樣的字元,此時單個位元組就不夠用了,至少需要使用2個位元組。為了處理全世界所有的語言,就發明了Unicode來解決此問題。Unicode通常使用2個位元組表示一個字元,個別偏僻的可能需要用到4個位元組。

  引入Unicode雖然解決了多種語言的編碼問題,但是在使用中還是存在資源浪費的問題。如果統一使用Unicode編碼,但是所有的文本都是英文的話,那豈不是要浪費很多記憶體?為瞭解決這個問題,後來引入了UTF-8編碼。在UTF-8編碼中,會把Unicode字元根據字元需要佔用的位元組數進行分配,比如英文字母就編碼成1個位元組,漢字通常是3個位元組。這樣就可以節省很多記憶體了。

三 list和tuple

  list和tuple都是python內建的一資料類型。其區別在於tuple是一旦初始化後就不可以再更改了。定義一個list如下:

#define a list
l=['Michael','Luffy','Nancy']

  list是一種有序的集合,與c/c++中的數組一樣,下標從0開始,可以隨時對其進行添加和刪除其中的元素。可以對list進行的操作有:append(),insert(),pop()和[]。

  當然list是可以嵌套定義的,如下:

#define a nest list
l=['Michael','Luffy','Nancy', ['Corey','Jason']]

  tuple必須在初始化時進行賦值,如下所示:

#define a tuple
t=('Michael','Luffy','Nancy')

  這裡我們需要對tuple的不可更改性進行一下講解。tuple的不可更改性只是針對對它的元素的“指向”,比如上面的例子中,tuple分別指向'Michael','Luffy'和'Nancy',所不能更改的就是只能一直指向這些字串,而不能在定義之後再指向其他字串。

  理解了“不可更改”的真正含義,我們就可以定義一個可以變換內容的tuple了。如下: 

#define a alterable tuple
t=('Michael','Luffy','Nancy',['Corey','Jason'])
t[3][0]='Jefrey'
t[3][1]='Avery'

  從上面的代碼可以看出,先定義一個名為t的tuple。在修改了資料之後並未修改初始化時指向的list,只是更改了list的內容,對於python來說這是允許的。

四 dict

  python中的dict就是c/c++中的map,是一個由鍵/值對組成的結構。對於dict我們要注意的是它對key的要求,dict要求key必須是不可變對象。這是因為dict根據key來計算Value的儲存位置,如果每次計算相同的key得出的結果不同,那麼dict的內部就混亂了,通過這個key計算位置的演算法稱之為雜湊演算法。

  在python中,字串和整數都是不可變對象,而list則是可變,不能做為key使用。

五 後記

  上述這些都是個人學習python總結所得,如有錯誤之處,敬請留言!!!

以上就是Python入門學習之資料結構的內容,更多相關文章請關注topic.alibabacloud.com(www.php.cn)!

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.