Python中list,tuple,dict,set的區別和用法

紀錄差異性以及使用時機。

List

存取

字面意思就是一個集合,在Python中List中的元素用中括號[]來表示,可以這樣定義一個List:

List_A = ["my", "age", "is", "19"]

當然也可以宣告成一個空的清單(List):

List_B = []

而且Python中的清單(List)是有序的,所以我們可以用Index來訪問,如果C語言你也學習過,那你應該就會覺得很熟悉,因為就跟Array的存取方式一樣:

List_C = ["A", "B", "C"]
List_C[0] --> A
List_C[1] --> B
List_C[2] --> C
List_C[3] --> IndexError: list index out of range</strong>

List也可以用倒序來訪問,也就是負號來取值:

List_C = ["A", "B", "C", "D", "E"]
List_C[-1] --> "E"

加入資料

List 可以使用append()來將資料加到尾部,也可以透過insert()的方法指定插入在何處:

List_C = ["A", "B", "C"]
List_C.append("E")
print (List_C) --> ['A', 'B', 'C', 'E']
List_C.insert(3, "D")-->['A', 'B', 'C', 'D', 'E']

移除資料

List可以使用pop()來將資料取出(Head),也可以使用pop(Index)的方法將某特定位置的資料移除:

List_C = ["A", "B", "C", "D", "E"]
List_C.pop()
print (List_C) -->['A', 'B', 'C', 'D']
List_C.pop(3)
print (List_C) --> ['A', 'B', 'C']

替換

My_Age = ["My", "age", "is", "20"]
My_Age[3] = "30" --> ["My" , "age", "is", "30"]

Tuple

Tuple可以看做是一種「不變」的List,訪問也是通過下標,用小括號()表示:

t = (3.1415, 'PI', 'Math')
print (type(t)) --> <class 'tuple'>
"""
很清楚的看到,Tuple type的資料是不允許替換的
"""
t[0] = 3.1415926 --> 'tuple' object does not support item assignment

Tuple也沒有append(), insert(), pop ()。

但還是可以宣告成空的Tuple。

t = ()

那麼tuple這個類型到底有什麼用處呢?要知道如果你希望一個函數返回多個返回值,其實只要返回一個tuple就可以了,因為tuple裡面的含有多個值,而且是不可變的。

t = (3.1415, 'PI', 'Math', ["highSchool", "3"])
print (t) --> (3.1415, 'PI', 'Math', ['highSchool', '3'])
degree = t[3]
print (degree) --> ['highSchool', '3']
"""
實驗替換 是否會發生錯誤
"""
degree[0] = "HighSchool"
degree[1] = "4"
print (t) --> (3.1415, 'PI', 'Math', ['HighSchool', '4'])
degree[2] = "Wilbur"
print (t) --> IndexError: list assignment index out of range

由此看的出來,Tuple所謂的不可變指的是指向的位置不可變,因為本例子中第四個元素並不是基本類型,而是一個List類型,所以t指向的該List的位置是不變的,但是List本身的內容是可以變化的,因為List本身在內存中的分配並不是連續的,但是我們也很清楚的觀察到,Tuple屬於靜態宣告,因此即使是可以改變資料,但也無法去加入更多的資料。

 

 

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s