python教程(二) 資料結構初探

2022-09-15 18:36:07 字數 4068 閱讀 2868

這一節,我來簡單講講python自帶的資料結構。

列表是常用的python資料結構,類似於c語言的陣列,用來儲存多個元素,與之不同的是,c語言的陣列中的元素的型別是相同的,而列表可以是不同型別的元素。

建立乙個列表可以用一對方括號擴起的用逗號,分隔的值(元素)來表示:

>>> list1 = ['a', 'b', 123, 1.2]
我們可以列印這個列表:

>>> print(list1)

['a', 'b', 123, 1.2]

訪問列表中的元素可以用列表名[索引]的方式,就像是操作乙個變數一樣。例如:

>>> print(list1[0]) # 輸出第乙個元素

a>>> print(list1[1]) # 輸出第二個元素

b>>> list1[0] = 123 # 為第乙個元素賦值

>>> print(list1[2] + list1[3]) # 用元素運算

124.2

>>>

注意:在計算機中,索引一般是從0開始的,也就是說第乙個元素的索引是0,依次類推。「索引」還有另一種稱呼——「偏移量」,乙個元素的偏移量就是該元素相對於首元素位置的偏移,如第2個元素相對於首元素的偏移為1,第3個元素的偏移量為2……因為第1個元素相對於第1個元素的偏移量顯然0,所以「偏移量」這個稱呼更有利於記住首元素是0號元素,所以作者更傾向於這個稱呼,讀者請隨意。

訪問列表中的元素要注意索引(偏移量)是否越界,比如上面4個元素的列表,如果訪問第5個元素將會報錯

>>> print(list1[4])

traceback (most recent call last):

file "", line 1, in indexerror: list index out of range

>>>

上面英文的大致意思是:列表的索引超出範圍,剛剛建立的列表只有4個元素,不存在第5元素,當然會報錯了。

我們可以建立乙個空列表:

>>>list1 = list() # 或者用 list1 =
可以新增元素

>>> list1 = list()

>>> list1

>>> list1

['hello', 123, ['a', 1]]

>>>

還可以刪除元素:

>>> list1

['hello', 123, ['a', 1]]

>>> del list1[2]

>>> list1

['hello', 123]

>>> list1.remove('hello')

>>> list1

[123]

>>>

list1 = [ 'hello', 123, 456.0 ]

# 迴圈將列表中的元素賦值給變數e

for e in list1:

print(e)

輸出如下:

hello

123456.0

元組的用法和列表類似,列表可以改變,如賦值、新增元素、刪除元素等,但是元組不可以改變,所以也就不能進行賦值、新增、刪除等操作。

元組的用法如下:

>>> tuple1 = (123, 'a', 'b')

>>> tuple1

(123, 'a', 'b')

>>> tuple1 = 123,456,'hello'

>>> tuple1

(123, 456, 'hello')

>>> print(tuple1[1])

456>>>

上面的例子中表明圓括號()不是必要的,其實逗號,才是元組所用的語法符號,但是建立乙個空元組的時候用一對圓括號()而不是乙個逗號,,**如下:

>>> tuple1 = , # 錯誤

file "", line 1

tuple1 = , # 錯誤

^syntaxerror: invalid syntax

>>> tuple1 = () # 正確

>>> tuple1

()>>> tuple1 = tuple() # 也可以這樣建立空元組

之前將多個變數同時賦值時,有一句a, b, c = 1, 2, 'hello',這其實是把乙個元組1, 2, 'hello賦值給三個變數a, b, c,像這樣把乙個元組賦值給多個變數的操作稱為「解包」,列表也是可以進行解包的^_^,元組解包操作**如下:

>>> tuple1

(123, 456, 'hello')

>>> a, b, c = tuple1

>>> a

123>>> b

456>>> c

'hello'

>>>

元組同樣可以用for語句來遍歷:

tuple1 = ( 'hello', 123, 456.0 )

for e in tuple1:

print(e)

輸出:

hello

123456.0

列表按索引訪問元素,索引只能是整數,而有時候我們需要一種更方便的方式操作元素,如:**簿按照姓名查詢**號碼,字典按照單詞查詢意思。像這樣用不是整數的「索引」來訪問元素的資料結構叫做字典,在c語言中也叫「關聯陣列」,字典的「索引」稱為「鍵」「關鍵字」,元素稱為「值」「鍵值」,字典中的每對鍵和值稱為「項」

建立乙個字典的方法是,用一對花括號{}擴起一系列用逗號分隔的鍵值對(項),其中鍵值對的表示方法是鍵:值,即,**如下:

>>> dict1 = 

>>> dict1

>>> dict2 = dict(hello='你好', python='一門計算機語言') # 也可以這樣

>>> dict2

>>>

一些簡單的操作:

>>> dict1['hello']

'你好'

>>> dict1['python']

'一門計算機語言'

>>> dict1['abc'] = 123 # 建立乙個項

>>> dict1

>>> del dict1['hello'] # 刪除鍵為'hello'的項

>>> dict1

>>> dict1 = {} # 空字典, 或者用 dict1 = dict()

>>> dict1

{}>>>

也可用for語句遍歷字典,但是for語句遍歷的是字典的鍵,得到了鍵自然就可以得到值:

dict1 = 

for k in dict1:

print(k,' =>', dict1[k])

輸出如下:

hello  => 你好

python => 一門計算機語言

本節只是簡單了解python中常用的資料結構,不作深入**,同時引出迴圈語句,接下來詳細介紹程式設計中十分重要的語法——迴圈語句……

spl 教程二 資料結構

雙向列表 public function spldoublylinkedlisttest elseif obj valid obj pop var dump obj print r obj 棧public function splstacktest pop stack pop echo pop 佇列...

python資料結構(二)

棧的應用之進製轉換 我們在大一的計算機基礎甚至高中的課程都已經了解了進製,以及不同進製的轉換方法。所謂進製,就是多少進製的幾次冪,例如十進位制下的233.就是2乘以10的平方加上3乘以十的一次方再加上3乘以10的0次方,演算法 十進位制轉換為二進位制,採用的是除以二求餘數的2演算法,在除二的過程中,...

資料結構 二叉排序樹BST初探

首先給出二叉排序樹 binary sort tree 的定義 一棵二叉排序樹或者是一棵空樹或者滿足以下條件 1 若它的左子樹不為空,則左子樹所有節點的值均小於根的值 2 若它的右子樹不為空,則右子樹所有節點的值均大於根的值 3 左右子樹本身又分別是二叉排序樹 如下圖就是乙個二叉排序樹 繪畫水平真的就...