iT邦幫忙

2024 iThome 鐵人賽

DAY 9
0
Python

從0開始學習Python-為未來學習AI奠定基礎系列 第 9

從0開始學習Python---串列(list)

  • 分享至 

  • xImage
  •  

串列(list)介紹

在Python中,串列(list) 是一種可以動態調整、儲存多種資料型態的資料結構。它以序列的方式組成多個元素,這些元素可以是相同或不同的資料型態。串列常被用來管理大量數據,例如建立學生成績表、資料庫管理等。

為何選擇串列?

串列可以在同一個結構內儲存不同的資料型態,如整數、浮點數、字串,甚至可以儲存其他串列或是元組、字典等資料型態。這使 Python 的串列在處理複雜數據時比其他語言的陣列(array)更具優勢。

串列的定義與操作

在Python中,定義一個串列只需將一組元素放在中括號 [] 內,並以逗號分隔。以下是定義串列的格式:

name_list = [元素1, 元素2, ..., 元素n]

如何操作串列

接下來會講到一些常見的操作,有讀取、切片兩種。

讀取串列元素

串列的每一個元素都有索引值,從0開始排列。這表示第一個元素的索引是0,第二個元素是1,依此類推。例如:
https://ithelp.ithome.com.tw/upload/images/20240909/20168994snqLAOuoiA.png

串列索引值為-n,代表最後第n筆元素

串列切片(List Slicing)

在設計程式時,我們常常需要從串列中取出部分資料,而不需要整個串列。此時可以使用Python的串列切片功能,而根據索引範圍選取的部分資料稱為子串列。以下是常用的切片操作方法:

  • name_list[start:end]:從索引start開始,取到end-1的元素。
  • name_list[:n]:取得前n個元素。
  • name_list[-n:]:取得最後n個元素。
  • name_list[:-n]:取得串列前面,不含最後n個元素。
  • name_list[n:]:取得串列索引n到最後。
  • name_list[-n:]:取得串列後n個元素。
  • name_list[:]:取得所有元素。
  • name_list[start:end:step]:每隔 step,讀取從索引 start 到索引(end-1)的串列元素

串列切片的簡單練習:

https://ithelp.ithome.com.tw/upload/images/20240909/201689945vpmuUDXiV.png

串列的內建函數與應用

Python提供了多種內建函數來處理串列中的資料,這些函數大大提升了程式的操作效率。常見的函數包括:

函數 功能
max() 取得串列中數字型元素的最大值
min() 取得最小值
sum() 計算數值元素的總和
len() 返回串列中元素的個數

注意事項

若是遇到同時含有字串和數值的串列,這時使用上述函數會導致錯誤:

https://ithelp.ithome.com.tw/upload/images/20240909/20168994jMWT1UoWjB.png

但是不用緊張,這樣的串列還是能使用內建函數的,可以使用切片來改善這個問題:

https://ithelp.ithome.com.tw/upload/images/20240909/201689945aon3c8F4o.png

可以看到我們把範圍改成從字串元素後開始,這樣就可以使用內建函數操作串列啦!

更改串列、串列相加

更改串列元素

更改操作是直接賦值給指定索引。例如,將某個特定索引位置的元素更改為新的值:

https://ithelp.ithome.com.tw/upload/images/20240909/20168994StsqJyHmev.png

串列相加

不同串列相加,相當於將不同的串列進行結合。實例如下:

https://ithelp.ithome.com.tw/upload/images/20240909/20168994zi4jLpFglV.png

可以看到我使用 list3 來儲存 list1+list2 的內容,list3列印出來的就是 list1 結合 list2 的結果。

串列元素相加

可以讀取不同串列的內容,並將不同串列內特定索引值的內容相加。實例如下:

https://ithelp.ithome.com.tw/upload/images/20240909/20168994uvSXYVvoHx.png

可以看到我想取 list1 索引2的內容、和 list2 索引5的內容相加。
因為list1 索引2的內容是5,而 list2 索引5的內容是12,所以相加的結果是5+12=17。

刪除串列

我們可以把串列整個刪掉,但刪除後就無法復原,也無法對其做任何操作,下列是刪除串列的方式:
del name_list:刪除串列name_list。

刪除串列元素

若是想要除串列中的特定元素,可以指定索引的精確位置、或是索引範圍:

  • del name_list[i]:刪除指定索引位置的元素。
  • del name_list[start:end]:刪除從索引 start 到 end-1 索引的串列元素。
  • del name_list[start:end:step]:每隔 step,刪除從索引 start 到(end-1)索引的串列元素。

一起來看看實例:

https://ithelp.ithome.com.tw/upload/images/20240909/20168994hsJGIAvWTq.png

結語

當有超多超多的資料時,可以用一個串列來存放這些資料,讓我覺得很方便。而且在編輯上也很靈活,可以隨時更改、刪除資料,一次可以選擇一個或多個的元素進行操作。雖然我覺得切片時範圍的部分不太好記,不過經過了一些練習讓我比較有概念了。
還有一個特別的點是串列裡面的元素可以包括各種資料型態,像是文章中有提到的整數、浮點數、字串等,不用再因為資料型態不同而慢慢的指定變數來存放資料,讓我覺得很省時。
今天學習到的是比較基礎的 list 知識,其實它還有很多功能跟內建函數,不過我覺得之後有用到的話可以再更深入了解,現在先有基本的核心知識就可以啦~


上一篇
從0開始學習Python--- if 敘述的各種運用
下一篇
從0開始學習Python---for 迴圈、九九乘法表、質數判斷
系列文
從0開始學習Python-為未來學習AI奠定基礎27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言