iT邦幫忙

2024 iThome 鐵人賽

DAY 6
0
Python

初學者的 30 天 Python 復健課程系列 第 6

復健第六天:把所有東西裝在一起的串列 List

  • 分享至 

  • xImage
  •  

東西很多,該放哪裡?

現實生活中,如果我們需要存放許多東西,可能會找一個櫃子集中起來。有的時候,我們會好好把東西分門別類,然後把每個櫃子貼上對應的標籤,然而大多時候,我(們?)都蠻懶的,會把所有東西全部扔進櫃子裡,有幾個櫃子就塞幾個。

(每個人都有一個不分類的櫃子)
https://ithelp.ithome.com.tw/upload/images/20240920/20167668GvHr6d4WYf.png

不過無論如何,按照這個概念,我們都需要一個更大的資料型態,來存放一些比較小的資料型態(字串、整數等),也因此 Python 中有四種可以存放的型態:

  • List 串列
  • Dictionary 字典
  • Tuple 元組
  • Set 集合

專門無腦存放用的——串列 List

串列 List 大概是前面提及四個資料型態中,最常被使用到的,而 List 有兩個特性——有排序性可改變裡面存放的物件。(請把這兩個特性刺在手上,牢牢記在心裡!)

https://ithelp.ithome.com.tw/upload/images/20240920/20167668UWxC8mzglF.png

如何創建一個 List?

在 Python 中有兩種方法可以創建 Python:

  • 使用內建函數 list()

    list_one = list()  
    print(list_one)    # [],這是一個空串列
    
    list_two = list("apple")
    print(list_two)    # ['a', 'p', 'p', 'l', 'e']
    

這邊要注意的是,如果使用 list() 創建 list,裡面的引數 argument 必須是一個可迭代(iterable)物件,在上面的範例裡,字串 "apple" 作為引數就是一個可迭代物件。

  • 使用中括號 []

    list_three = ["peach", 123, True]
    print(list_three)     # ['peach', 123, True]
    

有發現了嗎?在 list_three 裡面我們放了字串、整數、布林值等三種資料型態的物件,這告訴我們可以在串列中,基本上存放各式各樣的物件。(只要你喜歡,有什麼不可以!)

要怎麼知道一個串列有多長?

雖然說 Python 中的串列看起來像是個無窮無盡的空間,但實際上也不是像小叮噹的四次元口袋無限大(小叮噹的口袋據說也是有極限的),而串列能儲放的多寡,則取決於電腦的記憶體大小,但⋯⋯應該是用不完啦!

https://ithelp.ithome.com.tw/upload/images/20240920/20167668hpOl6BoAnl.png

透過串列的方法 len(),我們可以知道串列裡面有幾個元素 element,這邊的 element 指的即是「串列裡面的東西」。

fruits = ['banana', 'orange', 'mango', 'lemon']
print(len(fruits))   # 4,代表有四個元素

要怎麼從串列中取得指定的元素?

如果我們想從串列中拿出某個想要的東西,總不可能像小叮噹胡亂翻找自己的口袋吧,這時候又要再次使用昨天復健文章中的索引值 index。

# 從開頭計算
fruits = ['banana', 'orange', 'mango', 'lemon']
# index   0          1         2        3

# 從結尾計算
fruits = ['banana', 'orange', 'mango', 'lemon']
# index   -4         -3        -2      -1

print(fruits[1])   # orange
print(fruits[-3])  # orange

如何替換串列中指定的元素?

我們繼續使用剛剛的 fruits 做舉例,假設我們現在想要將第一個(index 為 0)元素 'banana' 換成 'kiwi',我們可以用 fruits[0] = 'kiwi',這時候 'banana' 將不復存在,變成了 'kiwi',不信可以用 print(fruits[0]) 印出來看看。

fruits = ['banana', 'orange', 'mango', 'lemon']
fruits[0] = 'kiwi'

print(fruits[0])    # kiwi

如何確認串列中有沒有指定的元素?

假設我們的 fruits 串列真的就像小叮噹的四次元口袋,裡面有好多好多的東西,然後我們想確認裡面到底有沒有 'lime' 這個元素,總不可能像小叮噹一個一個翻找吧?

https://ithelp.ithome.com.tw/upload/images/20240920/20167668hRPtPmuAsO.jpg

我們可以透過 in 這個運算子,來確認串列 fruits 裡有沒有我們所要尋找的元素。

fruits = ['banana', 'orange', 'mango', 'lemon']
does_exist = 'banana' in fruits
print(does_exist)  # True

does_exist = 'lime' in fruits
print(does_exist)  # False

如何拿出串列的其中一段元素?

一如字串可以用切片 slicing,串列也可以使用切片切出其中一段元素,如果忘記切片是什麼,也可以看一下昨天的復健文章,現在我們直接看範例。

fruits = ['banana', 'orange', 'mango', 'lemon']
all_fruits = fruits[0:4] # 取出 index 0 到 4 的元素,也就是全部

# this will also give the same result as the one above
all_fruits = fruits[0:] # 取得 index 0 到最後的元素,也是全部
orange_and_mango = fruits[1:3] # 取出 index 1 到 3 的元素,注意 index 1 到 3 並不包括 3,所以不會取得 'lemon'
banana_orange_mango = fruits[:3]
banana_and_mango = fruits[::2] # 從最開始取得,其中取得的間距為 2,所以會取得 index 0 與 index 2 的元素

後記

隨著學習的時間越來長,開始會找一些奇怪的問題、梗圖來娛樂自己,像是「Python 跟蟒蛇(python)有什麼關係嗎?」、「為什麼 Python 會被這麼多人推薦說很好學?」,這些問題再往後的文章,也希望陸續分享給大家。

學習一個語言剛開始看起來很困難,但深入研究之後,會逐漸找到許多樂趣,希望我們繼續撐過這 30 天!(五分之一了!)

https://ithelp.ithome.com.tw/upload/images/20240920/201676689DgAsL9RGD.jpg


上一篇
復健第五天:怎麼還是字串 Strings
下一篇
復健第七天:老闆,我還想再多來一點串列 List
系列文
初學者的 30 天 Python 復健課程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言