從Python認識資料結構(二).陣列

閱讀時間約 3 分鐘
列車車廂正是一種動態結構的展現,可隨需求增加或減少車廂數量
各位好,延續從Python認識資料結構(一).陣列的內容,今天要介紹在上文提到以如何透過靜態結構-串列(List)及動態結構-鏈結串列(Linked List)新增及修改陣列中的元素。

第二章、陣列功能實作

2-1、新增元素

首先先介紹透過以靜態結構-串列(List)來實作陣列的方式該如何新增元素,非常簡單,只要用append這個方法,語法為「串列名稱.append(新元素)」這種方式便可將元素新增於串列的最後方。如果要新增至指定位置,則可使用insert這個方法,但是須注意的是,insert需帶有兩項參數,第一個是指定位置的索引值,第二個才是是插入的元素,該元素會直接被放置在指定索引值的位置。如果是想要將兩個靜態串列進行合併,則可使用extend,語法為「串列名稱1.extend(串列名稱2)」,這個方法可以直接將串列2直接加到串列1的後方。要特別注意的是,以上三種方式都會直接更動串列本身,是一種對自身直接進行修改的方法。

若採用鏈結串列(Linked List)的方式實踐,同樣可以完成上方三種功能,第一項功能為新增於鏈結串列尾端,定義一個函數為linked_list_append,我們只需將將當前指標指向最後一個節點,並將最後一個節點中的next屬性改為新資料節點的位置,即可完成新增元素於鏈結串列於尾端的功能。

與靜態結構的串列不同,鏈結串列中每一元素並無指定的索引值,因此,若要在指定元素後新增節點,我們必須先找出指定元素的位置,並在其後方新增新節點,並做部分更動,假設今天要求在員工Vivian後新增一名員工Ray,薪資為70000。需特別注意的是,在我們找到指定元素位置後,我們應先該位置後方的節點位置於新節點的next屬性中,避免流失後方串列資訊,順序很重要,若不小心先將指定位置的next屬性改為新資料節點,我們就會永久的失去後方鏈節的資訊
第三種功能是要合併兩個鏈結串列,方法十分簡單,就如同將新資料節點新增於鏈結串列尾端節點,我們只要先找到尾端節點,並將其next屬性更變成欲合併的鏈結串列首個資料點,刻意忽略B鏈結串列的首節點,便可完成兩個串列的合併。

2-2、修改元素

使用串列方式實踐陣列,其修改元素的方法十分簡單,只要指定元素的索引值,直接賦予新值,便可完成取代。若資料龐大,無法計算出指定元素的索引值。我們可透過index這個方法取得元素的索引值,方法為 "list.index(指定元素)",但若有多個重複的指定元素,此方法僅會回傳所找到第一個指定元素的位置。

鏈結串列中要修改特定元素其實內容也大同小異,我們只要找到該指定元素在鏈結串列的位置,並將其屬性進行修改即可。舉例來說,我們想找到一位員工名字為John的員工,並將其薪水改成42000,我們需從頭尋訪節點,找到名字為John的員工,並直接對其薪水屬性進行修改,即可完成修改特定元素的功能。

以上是本章的內容,下一章節會繼續討論使用Python處理陣列中刪除元素與部分重要功能,若有任何問題,歡迎寄信及留言與我一起討論。

參考書目

  1. 圖解資料結構 - 使用Python(第二版)
  2. 圖書演算法 - 使用Python
  3. Python3 物件導向程式設計 第二版
  4. 精通Python (第二版)
3會員
8內容數
本專題將以Python程式語言來實作資料結構,依序從陣列(Array)、堆疊(Stack)、佇列(Queue)、樹(Tree)到圖(Graph),透過不同方式來建立資料結構,並討論部分細節如:建構難度、記憶體空間、效率等等。
留言0
查看全部
發表第一個留言支持創作者!
炯男孩的沙龍 的其他內容
你可能也想看
從零開始學python—資料型態在程式中,了解資料型態是相當重要的。 為什麽? 因為許多error,常常都是因為資料型態不正確所導致的。 舉個例子,在python中: a = 1 + 2 print(a) 結果就是3 a = = "1"+"2" print(a) 結果就是12 是不是差很多? 所以今天我來介
Thumbnail
avatar
媗日
2024-04-08
從零開始學python—print( )基本語法本文詳細解說了 Python print() 函數的各種隱藏語法,包括 value、sep、end、file 和 flush。作者以清晰的範例和解說,讓從未接觸程式語言的人也能夠理解。而最後提到了訂閱房間的付費方式,並歡迎大家訂閱。文章內容較為詳細,提供了豐富的資訊。
Thumbnail
avatar
媗日
2024-04-04
【從AKB48到Python: 我的語言學習故事】我從追星AKB48開始燃起了學語言的熱情。 又在研究Python的程式語言原理,撬開了語言學的大門。
Thumbnail
avatar
王啟樺
2023-10-04
Python程式設計的無盡魅力:從背後的冷知識到實用技巧在21世紀的技術浪潮中,「Python」不僅是程式設計的代表性語言,更是從初學者到資深工程師的共同選擇。除了在網頁開發、大數據和AI等專業領域中的應用,Python在全球的開發者社群中也建立了一個繁榮的生態系統,推動技術進步。然而,背後還隱藏著許多鮮為人知的故事和趣味,等待著我們去探索與發掘。
Thumbnail
avatar
Winson Li
2023-08-22
Python 部署到 Zeabur,從 Railway.app 搬出來了!Railway.app 價格方案即將改變,趁著今天有空測試了一下 Zeabur,很舒服的感覺。
Thumbnail
avatar
Liu Will
2023-07-31
【深智書摘】不管你是不是電腦業的從業人員,你都應該學會Python及至少一種人工智慧的框架!馬克•庫班(NBA獨行俠隊老闆,億萬富翁)說過:「人工智慧、深度學習和機器學習,不論你現在是否能夠理解這些概念,你都應該學習。否則三年內,你就會像被滅絕的恐龍一樣被社會淘汰。現在不開始,以後就來不及了。」
Thumbnail
avatar
深智數位
2023-02-20
從人氣漫畫看時代想法的轉變-英雄再強終究對抗不了社會結構最近因為眼睛出了問題,再加上政策提案等等大事件交雜而停更了好一陣子。這篇會提到的漫畫跟遊戲作品幾部:咒術迴戰、進擊的巨人、鬼滅之刃、怪獸8號、巫師(狩魔人)
Thumbnail
avatar
東京裏物語
2022-03-05
從認識「足部結構」來挑好鞋(下)!關於健康鞋的選擇與建議 這篇我想跟您說 1 健康鞋背後的設計原理 2 常見的健康鞋設計 3 選擇健康鞋的時機
Thumbnail
avatar
洪岳裕
2019-06-29
從認識「足部結構」來挑好鞋(上)!物理治療師教你五大關鍵挑好鞋俗話說「養樹護根,養人護足。」足部是我們步行走路時的唯一接觸點,足部不穩,上面的身體也會跟著歪。在我們治療理念裡,最重視的就是「脊」與「足」。
Thumbnail
avatar
洪岳裕
2019-06-28
從生活認識微積分(八)「瞬時」與「平均」變化率在前幾篇文章中,透過許多生活例子,如:經過幾分後,計算火鍋湯溫度對時間的平均變化率;又或者計算植物的平均生長速度,讓讀者了解,斜率是由兩個變量相除計算而來,對於「斜率」有深刻了解。此篇文章則將帶領讀者,由生活中的時間間隔,進一步思考「瞬時」與「平均」變化率之間的差異。
Thumbnail
avatar
Caspar
2018-08-11