大家在前面的學習中可以發現到處都是列表,彷彿Python語法都是圍繞列表展開的,本節會詳細的去介紹列表,列表被大多數Python用戶認為是Python中最核心的部分,因為Python的清單十分強大,我們很多操作都是基於列表來進行的。
首先我們還是先介紹一下列表,列表是一個可以包含多種資料類型的對象,列表中的內容是可以改變的,它屬於一種動態資料結構,我們可以對它進行添加或刪除操作,因此在列表操作的時候離不開索引的使用。
其實大家在前面可以多次的看到我們對列表的定義,在Python中我們不可以簡單的只定義一個變數名,例如我們接下來要使用一個列表,我們不可以先定義一個my_list,之後再進行賦值什麼的,因此我們定義列表的方式為:
my_liss=[]#定義空列表my_list=[1,2,3,4,5,6]#定義已有值的列表my_lizz=['a','b','c','d']
我們可以把列表當作一種容器,我們用它來存放東西,可以在其中存放相同類型的數據,也可以存放不同類型的數據,但是為了提高程序的可讀性,建議在一個列表中存放同一種資料類型。
有的時候我們需要建立擁有一定數值的列表,而我們又不想手動輸入,因此我們可以用list()函數嵌套range()函數直接進行建立。
list()函數不只可以進行強制型別轉換,把字串或元組轉換成列表,還可以在定義的時候就使用列表方式。
舉個例子:
我們想要創建一個列表,列表中包含1~10的數字,那麼我們可以採用以下方式:
my_list=list(range(1,11))print(my_list)
輸出結果為:
[1,2,3,4,5,6,7,8,9,10]
這樣就可以很快捷的建立一個我們想要得到的清單。
清單的刪除採用del語句來操作。格式為:
delmy_list
看下面實例:
my_list=[]delmy_list#刪除這個已建立的清單print(my_list)#輸出一下試試
輸出結果為:
FileD:/python/p/test.py,line3,in<module>print(my_list)NameError:name'my_list'isnotdefined
透過報錯提示我們可以知道我們建立的清單已經被刪除了。
我們有時會需要做一個列表的副本,這時候我們就需要複製列表中的元素,我們可以先思考一下,如果先定義一個列表,然後再定義一個列表,讓第二個列表等於第一個列表,我們修改了第一個列表中的值之後,第二個列表中的值會改變嗎?
看下面程式碼:
first_list=[1,2,3,4]#先定義一個清單second_list=first_list#複製這個清單print('修改前(第一個清單和第二個清單):',first_list,',',second_list) #輸出看first_list [0]=10print('修改後(第一個列表和第二個列表):',first_list,',',second_list)#再輸出看一下print(id(first_list),id(second_list))#透過訪問id可以發現此時兩個清單位址是相同的
輸出結果為:
修改前(第一個列表和第二個列表):[1,2,3,4],[1,2,3,4]修改後(第一個列表和第二個列表):[10, 2,3,4],[10,2,3,4]26239519545042623951954504
可以發現複製的第二個清單在第一個清單中的元素值被修改之後也跟著修改,說明了他們是使用的相同清單。
看下示意圖:
也就是說兩個變數使用的是記憶體中的相同列表,無論修改哪個列表中的元素,對應的都是同一列表。
如果想要使用相同內容的清單但各自獨立的話可以採用下面的方法:
first_list=[1,2,3,4]#先定義一個清單second_list=[]+first_list#使用連接符號print(id(first_list),id(second_list))#透過存取id可以發現此時兩個清單是相互獨立的
輸出結果為:
18998579287761900113448584
關於列表下面都是關於它進行講解,可能對比於其他教程本教程顯得過於囉嗦,但是大家一定要明白Python的數據結構中最核心的就是列表,把列表的各方各面學習透徹對之後不管是競賽也好,專案開發也好,都有很大的幫助,所以清單的學習十分重要。