數組和列表是編程中最有用的數據結構——儘管很少有人真正地利用它們來發揮他們的全部潛能。今天我將通過基本知識和一些簡單的Python示例來討論您。
為了學習這些概念,你不需要提前瞭解很多。對編程範例和Python的基本知識將很有幫助,但這是不需要的。如果您不知道從哪裡開始,請閱讀我們的基本Python示例。如果您認為Python是一種無用的語言,請查看我們為什麼不使用Python的原因。
雖然以下基本思想可以應用於任何語言,但我將用Python演示這些示例。這是一門很容易學習的語言,為理解正在發生的事情提供了一個極好的平臺。除此之外,教程點.com提供了一個優秀的在線Python解釋器——如果不想安裝Python,甚至不必安裝Python(如果需要,請參閱我們的虛擬環境指南)。
什麼是數據結構?在最基本的層面上,數據結構是有效存儲數據的一種方式。很容易混淆,因為數據結構不是數據類型。數據類型告訴編譯器(或者在Python的情況下告訴解釋器)如何使用數據。數據結構指定可以執行的操作,並且通常實現特定的規則和規定。
您可能聽說過一些線性數據類型(元素是連續的):
類似地,列表通常包含規則和方法來規範它們的操作方式。一些常見列表包括:
有大量不同的數據結構。您可能聽說過二叉樹、圖或哈希。今天我將討論基礎知識,但您可能希望在感到舒適後再學習更多。
讓我們從頭開始。數組是(相關)值的簡單集合。這些值稱為元素。它們通常可以是您喜歡的任何數據類型,包括對象或其他列表!數組的主要警告是,所有數據必須相同——不能存儲混合字符串和整數。幾乎總是需要指定要存儲多少元素。可變大小或動態數組確實存在,但固定長度數組更容易開始。
Python使事情變得有些複雜。它使事情變得非常簡單,但並不總是嚴格遵守數據結構的定義。Python中的大多數對象通常是列表,因此創建數組實際上需要更多的工作。以下是一些啟動代碼:
from array import arraynumbers = array('i', [2, 4, 6, 8])print numbers[0]第一行導入數組模塊——這是處理數組所必需的。第二行創建一個名為numbers的新數組,並用值2、4、6和8對其進行初始化。每個元素都分配了一個稱為鍵或索引的整數值。鍵從零開始,因此數字[0]將訪問第一個元素(2):
你可能在想“我”是用來做什麼的。這是一個類型代碼,它告訴Python數組將存儲整數。通常Python中不需要這種事情(它將被認為是“不同步的”)。原因很簡單。Python中的數組是操作系統底層C數組上非常薄的包裝器。這意味著它們是快速和穩定的,但它們可能並不總是堅持Python語法。
不能在這些數組中存儲混合類型。“說你想存儲字符串”makeuseof.com":
numbers = array('i', [2, 4, 6, "makeuseof.com"])這將不允許,並將引發異常:
以下是如何打印所有元素:
print numbers這種訪問數組元素的方法工作良好,適合於正確的任務。它不好的是訪問整個數組。程序員天生懶惰,所以我會很樂意編寫更多更好的代碼,如果這意味著我可以使維護更容易,並減少複製粘貼的工作量。
每個編程語言都將實現某種循環,這是在列表元素上迭代(循環)的完美方法。最常見的循環是while和for。Python通過提供for-in循環,使事情更加容易:
for number in numbers: print number請注意,您不必通過元素的鍵來訪問它們。這是一種更好的處理數組的方法。迭代列表的另一種方法是使用for循環:
for i in range(len(numbers)): print numbers[i]儘管必須指定數組中元素的數量(len(cars)),同時傳遞i作為數組的鍵,但這與前面的示例完全相同。這幾乎就是for in循環運行的代碼。這種方式提供了更大的靈活性,而且速度也更快(儘管for-in-loops在大多數情況下都足夠快)
既然您知道了數組是如何工作的,那麼讓我們看一個列表。它有時會令人困惑,因為人們可以互換地使用不同的術語,而且列表是數組。。。有點。
列表是一種特殊類型的數組。最大的區別是列表可以包含混合類型(記住,數組必須包含相同類型的元素)。列表在Python中非常簡單:
cars = ['Ford', 'Austin', 'Lancia']注意你不需要導入數組模塊嗎?
這個語法聲明瞭一個名為cars的列表。在方括號內,聲明列表的每個元素。每個元素用逗號分隔,由於每個元素都是一個字符串,所以可以在引號中聲明它們。Python知道這是一個對象,因此print語句將輸出列表的內容:
print cars與數組一樣,可以使用循環迭代列表元素:
for car in cars: print car真正的政黨把戲名單是他們的混合類型。繼續添加一些額外的數據:
cars = ['Ford', 'Austin', 'Lancia', 1, 0.56]這對Python來說不是問題——它甚至沒有引發異常:
向列表中添加新元素很容易(使用數組是不可能的):
cars = ['Ford', 'Austin']print carscars.append('Lancia')print cars也可以將兩個列表合併為一個:
cars = ['Ford', 'Austin']print carsother_cars = ['Lotus', 'Lancia']cars.extend(other_cars)print cars使用remove語法刪除元素同樣容易:
cars = ['Ford', 'Austin', 'Lotus', 'Lancia']print carscars.remove('Ford')print cars這將介紹Python中列表和數組的基礎知識。為什麼不考慮一個編碼項目,比如讀寫googlesheets,讀取json數據。也許你可以利用你的新技能**一些自定義的快捷鍵。儘管是一種不同的編程語言,這些數組原則仍然適用。
你學到什麼新東西了嗎?你想看看更復雜的內容嗎?請在下面的評論中告訴我們您的想法!
...。PHP中有各種資料型別,如整數、布林值、Null、字串、陣列和物件。PHP可用於檔案操作,如開啟、關閉、讀取和寫入檔案。可以處理資料收集和傳送電子郵件的表格。PHP支援HTTP cookies。Cookie用於跟蹤目的。這些是儲存在客戶端...
...元素都用方括號括起來。在C、Java等程式語言中,必須在陣列中儲存相同的資料型別。但在Python列表中,並不需要所有元素都是相同的資料型別。Python語言提供了幾個與列表相關聯的內建函式。程式設計師可以在程式中使用它們...
...別。標量變數以$開頭。它可以儲存字串、整數或引用。陣列變數以@開頭。它用於儲存標量的有序列表。雜湊變數以%開頭。它用於儲存鍵、值對。 Perl與web相關的技術如超文字標記語言(HTML)、XML等一起使用非常容易,Perl也可...
...閉包具有從外部作用域讀取和寫入變數的許可權。Ruby有陣列、雜湊等資料型別。 rubyonrails是一個用Ruby編寫的用於web開發的web框架。它很容易嵌入到超文字標記語言(HTML)中。Ruby還可以用於構建同時執行多個執行緒的多執行緒...
...元和複數。R有不同的資料結構,如向量、列表、矩陣、陣列、因子和資料幀。一個向量可以用來儲存多個元素。一個列表可以包含許多不同資料型別的元素,如向量或另一個列表。矩陣可以用來儲存二維資料集。陣列用於儲存...
關鍵區別-微陣列與下一代測序 DNA測序技術廣泛應用於生物技術、病毒學、醫學診斷和法醫學等領域。它是一個確定DNA分子中核苷酸、腺嘌呤、鳥嘌呤、胸腺嘧啶和胞嘧啶的確切順序的過程。DNA測序程式已成為醫學和生物學研...
... 6. 摘要 什麼是列表(list)? 在諸如C或C++的程式語言中,陣列被用來儲存相同資料型別的元素。但在Python列表中,所有元素不必同時存在。列表中的每一項都用逗號隔開。所有元素都包含在方括號內。列表的一個例子是list1=[1,“...
陣列與連結列表 陣列是儲存元素集合的最常用的資料結構。大多數程式語言都提供了方法來輕鬆地宣告陣列和訪問陣列中的元素。連結串列,更確切地說是單鏈表,也是一種可以用來儲存元素集合的資料結構。它由一系列節...
...型別。字串被認為是以0字元(表示為“\0”)結尾的字元陣列。字串的長度由約定表示:0字元之前的字元數。您可以忽略它,並在“\0”之後計數或儲存。由於缺少合適的字串型別和約定,多年來導致了無數的錯誤,稱為緩衝區...