Python數據結構 List(列表)、Tuple(元組)、Dictionary(字典)
List(列表):[]
列表是最常用的 Python 數據類型,它以一個方括號內的逗號分隔值出現。
列表屬于可變數據類型,字符串、整數、浮點數、布爾類型屬于不可變數據類型。
列表的數據項不需要具有相同的類型。
創建一個列表,只要把逗號分隔的不同的數據項使用方括號括起來即可。如下所示:
list1 = ['Google', 'Runoob', 1997, 2000]
list2 = [1, 2, 3, 4, 5 ]
list3 = ["a", "b", "c", "d"]
list4 = ['red', 'green', 'blue', 'yellow', 'white', 'black']
列表常用的方法(增、刪、改)、通過索引取值、函數(求長度、最大值、最小值、排序)
# 定義空的列表(購物清單)
shopping_list = []
# 往購物清單里添加兩個商品
shopping_list.append("鍵盤")
shopping_list.append("鍵帽")
# 往購物清單里移除一個商品
shopping_list.remove("鍵帽")
# 往購物清單里移除兩個商品
shopping_list.append("音響")
shopping_list.append("電競椅")
# 更改購物清單的第二個商品
shopping_list[1] = "硬盤"
# 打印列表的值(可變數據類型)
print(shopping_list)
# 打印列表第一個元素的值
print(shopping_list[0])
# 打印列表的長度(元素的數量)
print(len(shopping_list))
# 定義一個價格列表
price = [799, 1024, 200, 800]
# 獲取最高的價格
max_price = max(price)
# 獲取最低的價格
min_price = min(price)
# 獲取從低到高排序好的價格列表
sorted_price = sorted(price)
print(max_price)
print(min_price)
print(sorted_price)
列表運算符
列表對 + 和 * 的操作符與字符串相似。+ 號用于組合列表,* 號用于重復列表。
| Python 表達式 | 結果 | 描述 |
|---|---|---|
| len([1, 2, 3]) | 3 | 長度 |
| [1, 2, 3] + [4, 5, 6] | [1, 2, 3, 4, 5, 6] | 組合 |
| ['Hi!'] * 4 | ['Hi!', 'Hi!', 'Hi!', 'Hi!'] | 重復 |
| 3 in [1, 2, 3] | True | 元素是否存在于列表中 |
| for x in [1, 2, 3]: print(x, end=" ") | 1 2 3 | 迭代 |
Tuple(元組):()
Python 的元組與列表類似,不同之處在于元組的元素不能修改,屬于不可變數據類型。
元組使用小括號 ( ),列表使用方括號 [ ]。
元組創建很簡單,只需要在括號中添加元素,并使用逗號隔開即可。
# 創建元祖
tup1 = ('Google', 'Runoob', 1997, 2000)
tup2 = (1, 2, 3, 4, 5 )
tup3 = "a", "b", "c", "d" # 不需要括號也可以
type(tup3) #<class 'tuple'>
# 元組中只包含一個元素時,需要在元素后面添加逗號,否則括號會被當作運算符使用:
tup1 = (50)
type(tup1) # 不加逗號,類型為整型 <class 'int'>
tup2 = (50,)
type(tup2) # 加上逗號,類型為元組 <class 'tuple'>
# 元組與字符串類似,下標索引從 0 開始,可以進行截取,組合等。
tup1 = ('Google', 'Runoob', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )
print ("tup1[0]: ", tup1[0]) # tup1[0]: Google
print ("tup2[1:5]: ", tup2[1:5]) # tup2[1:5]: (2, 3, 4, 5)
# 元組中的元素值是不允許修改的,但我們可以對元組進行連接組合
tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
# 以下修改元組元素操作是非法的。
# tup1[0] = 100
# 創建一個新的元組
tup3 = tup1 + tup2
print (tup3) # (12, 34.56, 'abc', 'xyz')
# 元組中的元素值是不允許刪除的,但我們可以使用del語句來刪除整個元組
tup = ('Google', 'Runoob', 1997, 2000)
print (tup)
# 刪除元祖
del tup
print (tup) # 元組被刪除后,輸出變量會有異常信息
元祖運算符
與字符串一樣,元組之間可以使用 +、+=和 * 號進行運算。這就意味著他們可以組合和復制,運算后會生成一個新的元組。
| Python 表達式 | 結果 | 描述 |
|---|---|---|
|
3 | 計算元素個數 |
|
(1, 2, 3, 4, 5, 6) | 連接,c 就是一個新的元組,它包含了 a 和 b 中的所有元素。 |
|
(1, 2, 3, 4, 5, 6) | 連接,a 就變成了一個新的元組,它包含了 a 和 b 中的所有元素。 |
|
('Hi!', 'Hi!', 'Hi!', 'Hi!') | 復制 |
|
True | 元素是否存在 |
|
1 2 3 | 迭代 |
Dictionary(字典):{}
字典是另一種可變數據類型,且可存儲任意類型對象。
字典的每個鍵值對用冒號 : 分割,每個對之間用逗號(,)分割,整個字典包括在花括號 {} 中。
鍵必須是唯一的,但值則不必。
值可以取任何數據類型,但鍵必須是不可變數據類型,如字符串,數字,布爾類型,元組。
注意:dict 作為 Python 的關鍵字和內置函數,變量名不建議命名為 dict。
# 使用大括號 {} 來創建空字典
emptyDict1 = {}
# 使用內建函數 dict() 創建空字典
emptyDict2 = dict()
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
# 使用鍵獲取字典的值
print ("tinydict['Name']: ", tinydict['Name']) # tinydict['Name']: Runoob
print ("tinydict['Age']: ", tinydict['Age']) # tinydict['Age']: 7
print ("tinydict['Alice']: ", tinydict['Alice']) # 鍵不存在,輸出錯誤信息
# 更新或添加鍵值
tinydict['Age'] = 8 # 更新鍵 Age 對應的值
tinydict['School'] = "菜鳥教程" # 鍵 School 不存在,則添加
print ("tinydict['Age']: ", tinydict['Age']) # tinydict['Age']: 8
print ("tinydict['School']: ", tinydict['School']) # tinydict['School']: 菜鳥教程
# 刪除鍵、清空字典、刪除字典
del tinydict['Name'] # 刪除鍵 Name
tinydict.clear() # 清空字典
del tinydict # 刪除字典
# 創建字典 temperature_dict 其中包括啊 a,b,c 三個鍵對應值為 1, 2, 3
temperature_dict = {"a" : 1, "b" : 2, "c" : 3}
# 打印字典中鍵的數量
print(len(temperature_dict)) # 3
# 打印所有鍵的視圖對象
print(temperature_dict.keys()) # dict_keys(['a', 'b', 'c'])
# 打印所有值的視圖對象
print(temperature_dict.values()) # dict_values([1, 2, 3])
# 打印所有鍵值對組成的元祖的視圖對象
print(temperature_dict.items()) # dict_items([('a', 1), ('b', 2), ('c', 3)])
字典應用示例:查詢流行語含義
# 結合input、字典、if判斷,做一個查詢流行語含義的電子詞典程序
slang_dict["雙減"] = "指進一步減輕義務教育階段學生作業負擔和校外培訓負擔。其目標是使學校教育教學質量和服務水平進一步提升,作業布置更加科學合理,學校課后服務基本滿足學生需要,學生學習更好回歸校園,校外培訓機構培訓行為全面規范。"
slang_dict["破防"] = "原指在游戲中突破了對方的防御,使對方失去防御能力。現指因遇到一些事或看到一些信息后情感上受到很大沖擊,內心深處被觸動,心理防線被突破。"
slang_dict["元宇宙"] = "源于小說《雪崩》的科幻概念,現指在XR(擴展現實)、數字孿生、區塊鏈和AI(人工智能)等技術推動下形成的虛實相融的互聯網應用和社會生活形態。現階段,元宇宙仍是一個不斷演變、不斷發展的概念。Facebook(臉書)對外公布更名為“Meta”,該詞即來源于“Metaverse”(元宇宙)。"
slang_dict["絕絕子"] = "該詞流行于某網絡節目,節目中一些粉絲用“絕絕子”為選手加油。多用于贊美,表示“太絕了、太好了”。這個詞引發了網友對網絡語言的關注和討論。"
slang_dict["躺平"] = "該詞指人在面對壓力時,內心再無波瀾,主動放棄,不做任何反抗。“躺平”更像是年輕人的一種解壓和調整方式,是改變不了環境便改變心態的自我解脫。短暫“躺平”是為了積聚能量,更好地重新出發。"
slang_dict["傷害性不高,侮辱性極強"] = "一段網絡視頻中,兩名男子相互夾菜,而同桌的另一名女子則顯得很孤單。于是有網友調侃“傷害性不高,侮辱性極強”。后被網友用來調侃某事雖然沒有實質性危害,但是卻令人很難堪。"
slang_dict["我看不懂,但我大受震撼"] = "源自導演李安在紀錄片《打擾伯格曼》(2013)里評價一部影視作品的話。現多用于表示自己對某件事情的不解、震驚。"
query = input("請輸入您想要查詢的流行語:")
if query in slang_dict:
print("您查詢的" + query + "含義如下")
print(slang_dict[query])
else:
print("您查詢的流行語暫未收錄。")
print("當前本詞典收錄詞條數為:" + str(len(slang_dict)) + "條。")
字典內置函數:
| 序號 | 函數及描述 | 實例 |
|---|---|---|
| 1 | len(dict) 計算字典元素個數,即鍵的總數。 |
|
| 2 | str(dict) 輸出字典,可以打印的字符串表示。 |
|
| 3 | type(variable) 返回輸入的變量類型,如果變量是字典就返回字典類型。 |
|
字典內置方法:
| 序號 | 函數及描述 |
|---|---|
| 1 | dict.clear() 刪除字典內所有元素 |
| 2 | dict.copy() 返回一個字典的淺復制 |
| 3 | dict.fromkeys() 創建一個新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應的初始值 |
| 4 | dict.get(key, default=None) 返回指定鍵的值,如果鍵不在字典中返回 default 設置的默認值 |
| 5 | key in dict 如果鍵在字典dict里返回true,否則返回false |
| 6 | dict.items() 以列表返回一個視圖對象 |
| 7 | dict.keys() 返回一個視圖對象 |
| 8 | dict.setdefault(key, default=None) 和get()類似, 但如果鍵不存在于字典中,將會添加鍵并將值設為default |
| 9 | dict.update(dict2) 把字典dict2的鍵/值對更新到dict里 |
| 10 | dict.values() 返回一個視圖對象 |
| 11 | dict.pop(key[,default]) 刪除字典 key(鍵)所對應的值,返回被刪除的值。 |
| 12 | dict.popitem() 返回并刪除字典中的最后一對鍵和值。 |
相關學習資料:
3小時快速入門Python
Python3教程
浙公網安備 33010602011771號