Python從0開始 學習旅程5

2021-09-25 23:11:16 字數 4881 閱讀 6565

一、資料結構

python中存在三種重要的資料結構,即列表、元組和字典,下面將一一介紹這三種資料結構。

列表:

例子:in [

1]: #定義列表

...: ls = ['monday','tueaday','wednesday','thursday','friday','saturdat']

in [

2]: print ls

['monday', 'tueaday', 'wednesday', 'thursday', 'friday', 'saturdat']

in [

3]: #往列表中新增專案

('sunday')

...: print ls

...:

['monday', 'tueaday', 'wednesday', 'thursday', 'friday', 'saturdat', 'sunday']

in [

4]: #使用迴圈將列表中的一周7天列印出來

...: print 'a week has 7 days, there are:'

...: for i in ls:

...: print i

...:

a week has 7 days, there are:

monday

tueaday

wednesday

thursday

friday

saturdat

sunday

in [

5]: #使用del函式刪除列表中的某一項

...: del ls[0] #刪除列表中的第乙個專案

in [

6]: print ls

['tueaday', 'wednesday', 'thursday', 'friday', 'saturdat', 'sunday']

列表中的內容增值可減,其屬於可變的資料結構型別。

列表的容忍度非常高,可以裝下很多種東西,如列表中可以放置任何資料型別,如字串、數值、列表、元組、字典等。

in [

7]: ls2 = ['liushunxiang',26,['male','da',1],(1,2,3),]

...: print ls2

...:

['liushunxiang', 26, ['male', 'da', 1], (1, 2, 3), ]

元組

元組與列表類似,其不同之處在於元組是不可變的資料結構型別,無法實現往元組中增加或減少元素。元組通過圓括號將元素組合在一起,中間用逗號隔開。

例子:in [

9]: t = ('1a','2b','3c','4d','5e','6f','7g')

...: print t

...:

('1a', '2b', '3c', '4d', '5e', '6f', '7g')

元組最普遍的用法是與轉義字元一起使用

in [

10]: print ' name: %s gender: %s age: %d\n score: %.2f'%('liushunxiang\n','male\n',26,89.736)

name: liushunxiang

gender: male

age: 26

score: 89.74

其中,\n為轉義字元,表示換行;%s、%d%.2f表示資料型別,分別為字元型、整數型和浮點型,且浮點型資料保留2位。

字典

字典的本質就是將多個專案對緊緊的聯絡在一起,正如身份證號對應乙個人,python的術語將「身份證」命名為鍵,「人」命名為值。這裡需要強調的是,鍵必須是唯一的,而值可以是重複的。字典的寫法如下:

鍵與值之間用冒號隔開,多個鍵值之間用逗號隔開,他們用花括號括起來。字典也可以新增或刪除鍵值,其為可變的資料結構型別。

例子:in [

11]: meminfo =

...: print meminfo

...:

字典不像列表和元組可以通過索引獲取指定位置的值,而字典只能夠通過指定鍵才能返回對應的值。

in [

12]: print "id1's name is:",meminfo['id1']

id1's name is: abc

或者in [

13]: print "id3's name is %s"%meminfo['id3']

id3's name is cde

新增鍵值

in [

14]: meminfo['id5'] = 'liushunxiang'

...: print meminfo

...:

字典中不存在順序,其不屬於序列,所以新新增的鍵值沒有放在當前字典的最後乙個。

刪除鍵值

in [

15]:

delmeminfo['id2']

...: print meminfo

...:

通過字典的items方法可將每一對鍵值以元組的形式存放在列表中。

in [

16]: meminfo.items()

out[

16]: [('id4', 'def'), ('id5', 'liushunxiang'), ('id3', 'cde'), ('id1', 'abc')]

可通過for迴圈把對應的鍵值列印出來。

in [

17]: for id, name in meminfo.items():

...: print id,name

...:

id4 def

id5 liushunxiang

id3 cde

id1 abc

或者in [

18]: for id, name in meminfo.items():

...: print 'id is:%s, name is:%s'%(id,name)

...:

id is:id4, name is:def

id is:id5, name is:liushunxiang

id is:id3, name is:cde

id is:id1, name is:abc

二、切片

我們知道,字串、列表和元組都是序列,即他們都是有順序的,這樣就可以根據這些序列的索引取出乙個專案或使用切片取出連續的一組專案,這裡就以字串為例。

需要指出的是,python索引從0開始,這不同於r語言從1開始,而且取不到切片的上限,下面以例子說明問題。

in [

19]: mystring = 'liushunxiang'

...: print mystring

...:

liushunxiang

取出第乙個字元

in [

20]: print mystring[0]

l取出最後乙個字元

in [

21]: length = len(mystring)

...: print length

...: print mystring[len(mystring)-1]

...: g

取出'liu'

in [

22]: print mystring[0:2]

li發現並沒有取全,是因為切片的上限2取不到,只能取到1的位置。

in [

23]: print mystring[0:3]

liu或者

in [

24]: print mystring[:3]

liu取出'xiang'

in [

25]: print mystring[7:12]

xiang

或者in [

26]: print mystring[7:]

xiang

但這樣有些複雜,需要從頭開始數,如果字串很長的話,數起來就麻煩了。可以考慮從後往前取。

in [

27]: print mystring[-5:-1]

xian

仍然沒有取全,因為-5的位置取不到,只取到了倒數第二個位置。

in [

28]: print mystring[-5:]

xiang

上面的切片有乙個規律,即切片的第乙個值小於第二個值,如果大於等於第二個值呢?

in [

29]: print mystring[0:0]

...: print mystring[3:0]

...:

發現不返回任何結果,且沒有報錯。其實切片有3個引數,即[start,end,step],預設情況下,step=1,所以print mystring[3:0]沒有返回結果。

in [

30]: print mystring[2::-1]

uil這樣就能返回結果,但為逆序結果,如果想使結果再次顛倒一下,可以再原來的結果中再使用[-1::-1 ]切片

in [

31]: print mystring[2::-1][-1::-1 ]

...: print mystring[-1:-6:-1][-1::-1 ]

...:

liuxiang

下期預告

常用的字元函式和數學函式

學習 從0開始學架構 5

儲存高可用方案的本質都是通過將資料複製到多個儲存裝置,通過資料冗餘的方式來實現高可用,其複雜性主要體現在如何應對複製延遲和中斷導致的資料不一致問題 主備 讀寫主機,備機 主要還是起到乙個備份作用,並不承擔實際的業務讀寫操作 主從 主機讀寫,從機讀 雙機切換 狀態判斷 切換決策 中介式 主機和備機不再...

Python從0開始 安裝

進入官網 選擇download downloads 直接選擇最新版本安裝。是exe檔案,直接下一步下一步,要勾選path.我為了方便在台式電腦和筆記本都安裝了 神奇的事情發生了,正常應該顯示 但是我在台式電腦上輸入測試正常,筆記本提示的是如下 python is not recognized as ...

從0開始Python 變數

變數是程式中乙個臨時存放資料的場所。在執行程式的時候變數是可以改變的,並且改變次數是不確定的。需要注意的是變數必須先定義才能使用。我們可以先定義乙個名字為a的變數 a 10 現在我們就定義了乙個名字為a的變數,這個變數所對應的資料為10。現在我們來列印這個變數,並利用type函式來獲取這個變數的資料...