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

更新於 發佈於 閱讀時間約 4 分鐘
raw-image

各位好,延續從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 (第二版)
留言
avatar-img
留言分享你的想法!
avatar-img
炯男孩的沙龍
4會員
8內容數
本專題將以Python程式語言來實作資料結構,依序從陣列(Array)、堆疊(Stack)、佇列(Queue)、樹(Tree)到圖(Graph),透過不同方式來建立資料結構,並討論部分細節如:建構難度、記憶體空間、效率等等。
炯男孩的沙龍的其他內容
2022/08/09
本文為陣列實作的延伸,特別介紹鏈結串列不同的方式,以解決一些常發生在鏈結串列上的問題,並比較不同做法的優缺點。
Thumbnail
2022/08/09
本文為陣列實作的延伸,特別介紹鏈結串列不同的方式,以解決一些常發生在鏈結串列上的問題,並比較不同做法的優缺點。
Thumbnail
2022/07/12
本文會介紹靜態結構 - 串列(List)與動態結構 - 鏈結串列(Linked List)來實踐陣列的不同功能,如:刪除、計算元素個數與反轉。
Thumbnail
2022/07/12
本文會介紹靜態結構 - 串列(List)與動態結構 - 鏈結串列(Linked List)來實踐陣列的不同功能,如:刪除、計算元素個數與反轉。
Thumbnail
2022/07/07
陣列是Python語言的最基礎也最容易實作的資料結構,主要可以透過兩種方式在Python上實踐陣列,其中一種是靜態結構 - 串列(List),另一種則是動態結構 - 鏈結串列(Linked List)。 我們會依序介紹這兩種作法如何在Python上執行陣列的相關功能,並比較兩種方法之間的差異。
Thumbnail
2022/07/07
陣列是Python語言的最基礎也最容易實作的資料結構,主要可以透過兩種方式在Python上實踐陣列,其中一種是靜態結構 - 串列(List),另一種則是動態結構 - 鏈結串列(Linked List)。 我們會依序介紹這兩種作法如何在Python上執行陣列的相關功能,並比較兩種方法之間的差異。
Thumbnail
看更多
你可能也想看
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
我們介紹了字串和列表的索引和切片操作。索引使用方括號[]來選擇字串或列表中的特定元素,並可以使用正向索引(從0開始)或反向索引(從最後一個元素為-1)來訪問元素。切片使用方括號[]和冒號:來選擇字串或列表中的一段子序列,指定起始位置和結束位置(不包含),並可以使用步長來控制間隔。
Thumbnail
我們介紹了字串和列表的索引和切片操作。索引使用方括號[]來選擇字串或列表中的特定元素,並可以使用正向索引(從0開始)或反向索引(從最後一個元素為-1)來訪問元素。切片使用方括號[]和冒號:來選擇字串或列表中的一段子序列,指定起始位置和結束位置(不包含),並可以使用步長來控制間隔。
Thumbnail
探索Python學習筆記中列表的建立、存取和常用方法。從使用中括號定義列表到了解索引、新增、刪除、修改等操作,並介紹append、remove、count等常用方法。
Thumbnail
探索Python學習筆記中列表的建立、存取和常用方法。從使用中括號定義列表到了解索引、新增、刪除、修改等操作,並介紹append、remove、count等常用方法。
Thumbnail
資料集中除了陣列這個外,還有另一個好幫手就是List,它跟陣列很像,我們直接來看一下怎麼用: 它的語法: 1.給予值 (1)單一新增: (2)陣列式新增: 例子: 2.取值 (1)foreach迴圈方式 (2)單一取值 3.取得List有多少個內容值 4.排序 想要反轉就再使用↓ 5.插入 6.複製
Thumbnail
資料集中除了陣列這個外,還有另一個好幫手就是List,它跟陣列很像,我們直接來看一下怎麼用: 它的語法: 1.給予值 (1)單一新增: (2)陣列式新增: 例子: 2.取值 (1)foreach迴圈方式 (2)單一取值 3.取得List有多少個內容值 4.排序 想要反轉就再使用↓ 5.插入 6.複製
Thumbnail
在使用陣列時一開始也是需要做宣告的,那麼這次說的內容是一維陣列,因此一維陣列宣告內容包括:資料型態、陣列名稱、以及陣列的大小。那麼我們就來看一下它的語法是如何的: 說明:等號左邊是做宣告,而右邊是做建立的動作。 一、初始值設定 那麼初始值要怎麼設定呢?這邊有幾種方法,用例子帶大家來看一看: 1.有給
Thumbnail
在使用陣列時一開始也是需要做宣告的,那麼這次說的內容是一維陣列,因此一維陣列宣告內容包括:資料型態、陣列名稱、以及陣列的大小。那麼我們就來看一下它的語法是如何的: 說明:等號左邊是做宣告,而右邊是做建立的動作。 一、初始值設定 那麼初始值要怎麼設定呢?這邊有幾種方法,用例子帶大家來看一看: 1.有給
Thumbnail
Array 在記憶體中連續分配,而且元素類型是一樣的,長度不變 優點:讀取快,可以使用座標訪問 缺點:新增、刪除慢 記憶體: 📷 範例程式碼: ArrayList 不定長度,在記憶體中連續分配的,元素沒有類型限制,任何元素都是當成object處理,如果是值類型,會有裝箱的操作 優點:讀取快 缺點:
Thumbnail
Array 在記憶體中連續分配,而且元素類型是一樣的,長度不變 優點:讀取快,可以使用座標訪問 缺點:新增、刪除慢 記憶體: 📷 範例程式碼: ArrayList 不定長度,在記憶體中連續分配的,元素沒有類型限制,任何元素都是當成object處理,如果是值類型,會有裝箱的操作 優點:讀取快 缺點:
Thumbnail
本文會介紹靜態結構 - 串列(List)與動態結構 - 鏈結串列(Linked List)來實踐陣列的不同功能,如:刪除、計算元素個數與反轉。
Thumbnail
本文會介紹靜態結構 - 串列(List)與動態結構 - 鏈結串列(Linked List)來實踐陣列的不同功能,如:刪除、計算元素個數與反轉。
Thumbnail
本文延續從上一篇文章的內容,繼續來介紹如何分別以靜態結構 - 串列(List)及鏈結串列(Linked List)兩種不同的方式來建立實作陣列的新增及修改元素功能。
Thumbnail
本文延續從上一篇文章的內容,繼續來介紹如何分別以靜態結構 - 串列(List)及鏈結串列(Linked List)兩種不同的方式來建立實作陣列的新增及修改元素功能。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News