seansie's blog

清單與元組 python 新手教學#4 | seansie blog

2024/7/21 第二次編輯

清單

在python中,有一個資料形態是 list ,是一個物件,由數個元素組成。#

範例

我的飲料 = ["珍珠", "鮮奶" ,"半糖" ,"去冰"]
外送清單 = [['青茶', '綠茶', '仙草', '正常冰'],
 ['少冰', '紅豆', '綠豆', '熱飲'],
 ['寒天', '熱飲', '青茶', '綠茶'],
 ['微糖', '紅茶', '紅豆', '愛玉'],
 ['紅豆', '青茶', '椰果', '正常冰']] 

這個例子說明了清單的用法,其中我的飲料是基本的用法,裏面存放了數個飲料內容物的字串(物件),然後外送清單是進階用法,名稱是巢狀清單,在這個例子中外送清單中裏面還有清單,雖然可能有人會覺得很奇怪,但是這個用法也是被python允許的。

  • 裏面可以包含任何物件,包括自己(列表),重複物件。
  • 第一個物件的索引值(又稱元素編號等等)爲 0 其他以此類推,第n個的索引爲 n-1,與大多數程式語言 陣列 這個物件的用法相同。
arr= [ "a", "b" ,"c" ]
print(arr[0])
print(arr[1])
print(arr[2])

執行結果

a
b
c

存取

清單名稱[元素編號,又稱索引值] ,例如 print([0])

修改

直接修改指定元素:跟修改變數一樣,只是要加上索引,例如 a[0]=12 等等。

應用

應用

在python的 list 物件中有許多方便的函數可以提供更便利的操作,以下皆會提供一個範例。

PS:因爲一個程式可以有很多清單,所以要告訴電腦你打算要對那個清單操作,

用法是 清單名字.下列函數 ,其它依此類推,對於函數名稱在第一次提到時會統一冠上 list前綴,以表示是 list物件的從屬函數,接著第二次提到時會酌情省略。

e.g 針對 arr清單做 append 的操作,就要寫成arr.append() 的樣子。

爲求簡潔,若沒有特別說明,則視爲用arr清單作爲例子,而且程式碼會省略清單宣告(如下)的部分。

 arr=[1,2,3,4,5]

新增元素

  • list.append()

    顧名思義,就是增補,白話就是在清單後面新增元素,用法爲arr.append(你要新增的元素)

    舉例來說,執行 arr.append(6) 後,arr變成了 [1, 2, 3, 4, 5, 6]

  • list.extend()

    append() ,大同小異,差別是若引數是序列物件的時候, append() 會直接將整個物件作爲一個元素放進去清單中,導致該清單變成巢狀清單,而 extend() 函數會先將該物件拆解爲元素再一一放入清單。

    舉例來說,如果把[-1,-2] 分別用 append 還有 extend 函式放入,則用 append 方式的結果是 arr 陣列會變成 [1, 2, 3, 4, 5, [-1, -2]] 也就是直接將[-1,-2] 視爲 一個元素.

    反之用extend 的話會變成 [1, 2, 3, 4, 5, -1, -2] ,因爲 [-1,-2] 會被系統拆解成數個元素,再一一放入,因此才會變成這樣。

  • list.insert()

    顧名思義,就是插入,其實可以視爲 append 的加強版,因爲可以指定新增元素的位置。

    引數格式爲 (索引值,要插入的元素) ,所謂插入是新增的元素會取代該索引值(引數)的元素,而其他受影響的元素索引值會順延一格。

    舉個例子, 執行完arr.insert(1,True) 之後,arr變成了 [1, True, 2, 3, 4, 5]

移除元素

  • list.pop()

    即彈出元素,白話來說就是刪除指定索引值(引數)的元素。引數格式爲想要刪除的元素索引值,順帶一提,此函數執行完會回傳被刪除的元素內容。

    舉例來說,執行完 arr.pop(0) 之後,arr 變成了 [2, 3, 4, 5]

  • list.clear()

    將清單的所有元素清除的意思執行 arr.clear() 之後,arr變成[]

存取元素

  • list.copy()

    回傳一個複製的新清單。例如執行 print(arr.copy()) 後,螢幕上會出現 [1, 2, 3, 4, 5],即arr陣列的副本

  • list.index()

    回傳引數所在的索引值,如果沒找到,就會回傳 ValueError 錯誤,詳情可以看本人寫的 例外處理 的文章。

    例如執行 arr.index(1) 後,就會回傳 0 ,因爲 1 這個元素在 arr 清單中的索引值是 0

特殊操作

  • list.reverse():顧名思義,就是反轉,會修改 arr 清單,讓他裏面的內容反轉。

舉例來說,若執行arr.reverse()arr會被修改成 [5, 4, 3, 2, 1]

  • list.sort():顧名思義,就是排序,因爲 arr 這個例子已經被排序了,所以在此函數的示範中,我會再宣告一個新清單,如下程式碼所示。
li=[5,8,7,9,6,4,1,2,3]

​ 舉例來說,若執行li.reverse()li會被修改成 [1, 2, 3, 4, 5, 6, 7, 8, 9]

元組

一言以蔽之,就是無法修改的清單,其他與清單都大同小異。

Reference

https://www.w3schools.com/python/python_lists.asp

https://builtin.com/data-science/python-list

https://www.w3schools.com/python/ref_list_index.asp

https://www.runoob.com/python3/python3-att-list-copy.html

https://sean22492249.medium.com/python-list-的-extend-append-的差別-5dd4a585aafe

https://www.programiz.com/python-programming/methods/list/index

https://www.w3schools.com/python/ref_list_pop.asp