iT邦幫忙

2024 iThome 鐵人賽

DAY 7
0
Python

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

復健第七天:老闆,我還想再多來一點串列 List

  • 分享至 

  • xImage
  •  

Python 跟蟒蛇的 python 有關係嗎?

很多人應該是認識 Python 這個程式語言,卻不知道 python 這個字在字典裡具有「巨蟒」之意,不過現在你知道了,長知識了吧!

Python 這個名稱實際上是由當初的開發者 Guido van Rossum,也就是那個本來應該寫 PEP 20 第二十條的荷蘭大叔所命名,根據大多數的網路資料,Guido 之所以會使用 Python 這個語言的命名,純粹只是因為自己很喜歡一個英國喜劇團體——「Monty Python's Flying Circus 蒙提・派森的飛行馬戲團」。

(我是不太懂英式幽默啦,但點閱率說明應該是真的很好笑?)
Yes

然而,說這個 Python 跟蟒蛇一點關聯倒也不完全正確,畢竟蒙提・派森的飛行馬戲團又被稱作「巨蟒劇團、蒙提巨蟒」,這樣說起來倒也多少有點關係,所以當下次有人要糾正你說——「Python 跟蟒蛇一點關係也沒有」的時候,便拿出這段來說嘴了。

另一個重點來了,Python 到底是讀「派森」還是「派桑」一直是學習這個語言時,每個人都有自己的見解,不過既然這個語言是由 Guido 所命名,那想必跟著他念一定最正確吧!

(聽起來似乎有那麼一點「桑」感?)
Yes

還能怎麼操作串列 List?

昨天我們講到「如何創建一個新串列」、「替換串列中的元素」,並且試圖從 List 取出我們想要的元素。不過在繼續今天的復健之路之前,我先來說說在我自己程式語言的路上,一些小小的學習心法。

在電腦程式語言中,CRUD 增刪查改是一種常見的動作行為,代表的是 Create 增加、Read 查詢、Update 修改、Delete 刪除,而這個字詞最早是由 James Martin 在他所撰寫的 Managing the Data-base Environment 書中所提到。

仔細回想我們生活中使用的任何一款 app,基本上都可以做到新增 Create 一筆新的資料、查詢 Read 舊有的資料、更新 Update 舊有的資料、刪除 Delete 舊有的資料,這些功能看似簡單,卻建構是不可缺少的要素。

所以我們在學習資料型態時,也可以先認識並記住如何進行資料型態。

如何在串列裡新增元素?

所以除了創建新串列、替換串列中的元素,我們也可以增加更多的元素到串列中,一如小叮噹的四次元口袋,我們有新的道具就要拼命地往裡頭塞,反正空間很大嘛!

我們可以使用串列中的 append() 方法,將指定的元素新增到現有串列的最尾端。

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

fruits.append('apple')
print(fruits)           # ['banana', 'orange', 'mango', 'lemon', 'apple']

fruits.append('lime')   # ['banana', 'orange', 'mango', 'lemon', 'apple', 'lime']
print(fruits)

也可以透過 insert() 方法,將元素插入至指定索引值的位置,這樣就不一定要放在串列的最尾端了。不過要注意的是,append() 可以一次添加多個元素,但 insert() 一次卻只能插入一個元素。

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

fruits.insert(2, 'apple') 
print(fruits)             # ['banana', 'orange', 'apple', 'mango', 'lemon']

fruits.insert(3, 'lime') 
print(fruits)             # ['banana', 'orange', 'apple', 'lime', 'mango', 'lemon'] 

如何刪除串列裡的元素?

我想,我應該不用再用四次元口袋做比喻了吧?(想偷懶了。)

Python 有蠻多種可以刪除元素的方法,不過所代表的意義有點不太相同:

  • 使用 remove() 方法:可以「一次移除一個」指定的元素。

    fruits =, ['banana', 'orange', 'mango', 'lemon', 'banana']
    
    fruits.remove('banana')
    print(fruits)  # ['orange', 'mango', 'lemon', 'banana']
    
    fruits.remove('lemon')
    print(fruits)  # ['orange', 'mango', 'banana']
    
  • 使用 pop() 方法:可以取出指定索引值的元素,或是在沒有指定任何索引值的狀況下,移除最後串列中的最後一個元素。(有發現嗎?我這裡使用的動詞是「取出」,而不是「移除」,因為使用 pop() 方法取出的元素,可以當作值,被賦值在其他的變數中)

    fruits = ['banana', 'orange', 'mango', 'lemon']
    
    fruits.pop()
    print(fruits)       # ['banana', 'orange', 'mango']
    
    only_banana = fruits.pop(0)
    
    print(fruits)       # ['orange', 'mango']
    print(only_banana)  # 'banana'
    
  • 使用 clear() 方法:清空整個串列。

    fruits = ['banana', 'orange', 'mango', 'lemon']
    fruits.clear()
    print(fruits)       # []
    

如何刪除串列?

如果把「刪除元素」比喻成「扔掉小叮噹不要的道具」,那「刪除串列」就是「連小叮噹的四次元口袋都不要了」,要注要的是即便用 clear() 方法清空了串列,空串列依舊是一個存在的串列,但刪除串列是整個「燒毀」,讓這個串列消失在記憶體之中。

(是不是哪裡怪怪的?)
https://ithelp.ithome.com.tw/upload/images/20240921/201676687bh9M0gzcA.jpg

我們可以使用關鍵字 del 移除串列中指定的元素,也可以使用這個關鍵字徹底刪除這個串列(注意:這是無法復原的!)。

fruits = ['banana', 'orange', 'mango', 'lemon', 'kiwi', 'lime']
del fruits[0]
print(fruits)       # ['orange', 'mango', 'lemon', 'kiwi', 'lime']
del fruits[1]
print(fruits)       # ['orange', 'lemon', 'kiwi', 'lime']
del fruits[1:3] 
print(fruits)       # ['orange', 'lime']
del fruits
print(fruits)       # 出現 NameError: name 'fruits' is not defined,因為 fruits 已經不見了

如何複製一個現有的串列?

有時候我們可能需要複製一個現有的串列,然後對新複製的串列進行其他的操作,透過 copy() 方法,我們可以像按下 ctrl + cctrl + v 複製出一個一模一樣的串列,之後如果我們對複製的串列做什麼事,本來的串列都不會受到影響。

https://ithelp.ithome.com.tw/upload/images/20240921/20167668ZIQ2XMvsXA.jpg

後記

這幾天開始感覺到一些壓力了,生活中總有些突如其來的忙碌,在沒有多餘存檔的前提下,每一天真的跟跑三鐵一樣,在指定的時間需要完成指定的文章,一點點偷懶都可能導致棄賽,而現在才稍稍接近整個賽期的三分之一,只能不停地信心喊話——「無論如何,我會完成的。」


上一篇
復健第六天:把所有東西裝在一起的串列 List
下一篇
復健第八天:跟元祖雪餅沒有關係的元組 Tuples
系列文
初學者的 30 天 Python 復健課程13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言