這一節,我來簡單講講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 左右子樹本身又分別是二叉排序樹 如下圖就是乙個二叉排序樹 繪畫水平真的就...