前言:在Python編程語言中,序列是一種非常重要的數據結構,它允許我們存儲和操作有序的數據集合。在前幾期的內容中,我們已經探討了列表(List)和集合(Set)這兩種序列的應用,它們各自具有獨特的特性和用途。列表以其靈活性和可變性而聞名,而集合則以其無序性和唯一性而受到青睞。今天,我們將深入探討Python中的另外兩種序列類型:元組(Tuple)和字典(Dictionary)。
元組和字典都是Python中不可或缺的數據結構,它們在不同的場景下有著廣泛的應用。元組以其不可變性和高效性而受到青睞,尤其適合用于保護數據不被修改的情況。字典則以其鍵值對的結構和快速查找能力而聞名,是存儲和管理關聯數據的理想選擇。
在這篇文章中,我們將詳細介紹元組和字典的創建、操作和應用,包括:
- 元組的創建和刪除:如何創建元組,以及如何刪除整個元組或其元素。
- 訪問元組元素:如何通過索引訪問元組中的元素。
- 修改元組元素:為什么元組是不可變的,以及如何處理需要修改元組的場景。
- 元組推導式:如何使用元組推導式來創建元組。
- 字典的創建和刪除:如何創建字典,以及如何刪除整個字典或其元素。
- 通過鍵值對訪問字典:如何通過鍵來訪問字典中的值。
- 遍歷字典:如何遍歷字典的鍵、值或鍵值對。
- 添加、修改和刪除字典元素:如何對字典進行增刪改操作。
- 字典推導式:如何使用字典推導式來創建字典。
通過這篇文章,你將能夠更深入地理解元組和字典的工作原理,以及如何在實際編程中有效地使用它們。無論是處理固定不變的數據集,還是管理復雜的關聯數據,元組和字典都能提供強大的支持。讓我們開始今天的探索之旅吧!
一、元組
Python 中的元組(Tuple)是一種數據結構,用于存儲不同的值(可以是數字、字符串、對象等)。元組與列表(List)類似,但元組是不可變的,這意味著一旦元組被創建,你就不能添加、刪除或改變它的元素。元組的這種不可變性使得它們在某些情況下比列表更安全,因為它們不能被意外地修改。
以下是關于Python元組的一些基本特性和操作:
1、創建元組:
元組可以通過將一系列值用逗號分隔來創建,或者使用圓括號來明確表示這是一個元組。
# 使用逗號分隔
my_tuple = 1, 2, 3
print(my_tuple) # 輸出:(1, 2, 3)# 使用圓括號
my_tuple = (1, 2, 3)
print(my_tuple) # 輸出:(1, 2, 3)
2、元組的刪除
由于元組是不可變的,你不能刪除元組中的單個元素,但可以刪除整個元組或者清空整個元組。
my_tuple = (1, 2, 3)
del my_tuple # 刪除整個元組
# my_tuple[0] = 4 # 嘗試修改元素會拋出TypeError# 清空元組
my_tuple = ()
print(my_tuple) # 輸出:()
3、 訪問元組元素:
可以通過索引來訪問元組中的元素,索引從0開始。
my_tuple = (1, 2, 3)
print(my_tuple[0]) # 輸出:1
4、元組的不可變性:
由于元組是不可變的,你不能修改元組中的元素。嘗試修改將會導致錯誤。
my_tuple = (1, 2, 3)
# my_tuple[0] = 4 # 這會拋出TypeError
5、元組的切片:
可以對元組進行切片操作,但結果仍然是一個新的元組。
my_tuple = (1, 2, 3, 4, 5)
print(my_tuple[1:3]) # 輸出:(2, 3)
6、元組的連接:
可以使用加號(+)來連接兩個元組,但結果是一個新的元組。
tuple1 = (1, 2)
tuple2 = (3, 4)
print(tuple1 + tuple2) # 輸出:(1, 2, 3, 4)
7、元組的解包:
可以同時賦值多個變量,這稱為元組的解包。
my_tuple = (1, 2, 3)
a, b, c = my_tuple
print(a, b, c) # 輸出:1 2 3
8、元組的方法:
元組有一些內置的方法,如 count()
和 index()
。
在Python中,count()
和 index()
是列表(List)和元組(Tuple)等序列類型提供的內置方法,它們用于執行特定的操作:
① count() 方法:
count()
方法用于統計某個元素在序列中出現的次數,并返回這個計數。- 它接受一個參數,即你想要計數的元素。
- 如果元素在序列中不存在,則返回0。
- 示例:
my_list = [1, 2, 2, 3, 2, 4] count_of_two = my_list.count(2) # 返回元素2出現的次數 print(count_of_two) # 輸出:3
② index() 方法:
index()
方法用于從序列中找出某個元素第一次出現的索引位置,并返回這個索引。- 它接受一個參數,即你想要查找索引的元素。
- 如果元素在序列中不存在,則拋出一個
ValueError
異常。 - 可以有可選的參數,用于指定搜索的起始和結束位置。
- 示例:
如果列表中有多個相同的元素,my_list = [1, 2, 3, 2, 4] index_of_two = my_list.index(2) # 返回元素2第一次出現的索引 print(index_of_two) # 輸出:1
index()
只會返回第一個元素的索引。
這兩個方法在處理列表和元組時非常有用,尤其是在需要對元素進行計數或者查找元素位置時。
9、元組與列表的轉換:
元組可以被轉換成列表,反之亦然,因為列表是可變的。
my_tuple = (1, 2, 3)
my_list = list(my_tuple) # 將元組轉換為列表
print(my_list) # 輸出:[1, 2, 3]my_list = [1, 2, 3]
my_tuple = tuple(my_list) # 將列表轉換為元組
print(my_tuple) # 輸出:(1, 2, 3)
10、元組推導式
元組推導式類似于列表推導式,但是使用圓括號而不是方括號。
my_tuple = tuple(i * 2 for i in range(5))
print(my_tuple) # 輸出:(0, 2, 4, 6, 8)### 11、元組和列表的區別
1. **可變性**:- 列表是可變的,可以添加、刪除或更改元素。- 元組是不可變的,一旦創建就不能更改。2. **性能**:- 由于元組的不可變性,它們通常比列表有更小的內存開銷,并且在某些情況下執行速度更快。3. **用途**:- 列表通常用于存儲需要動態改變大小的數據集合。- 元組通常用于保護數據不被改變,并且可以作為字典的鍵,而列表則不能。4. **方法**:- 列表有更多的方法,比如 `append()`, `extend()`, `remove()`, `pop()` 等,因為它們需要支持元素的添加和刪除。- 元組的方法較少,主要是 `count()` 和 `index()`。5. **語法**:- 創建列表時使用方括號 `[]`。- 創建元組時使用圓括號 `()`,或者逗號分隔。元組在Python中非常有用,特別是在需要確保數據不被改變的情況下,比如作為字典的鍵或者函數的返回值。### 實例訓練20 -使用元組保存咖啡館里提供的咖啡名稱
coffeename = (‘藍山’,‘卡布奇諾’,‘摩卡’,‘曼特寧’,‘麝香貓’,‘哥倫比亞’) #定義元組
print(coffeename) #輸出元組
### 實例訓練21 -使用for循環列出咖啡館里提供的咖啡名稱
coffeename = (‘藍山’,‘卡布奇諾’,‘摩卡’,‘曼特寧’,‘麝香貓’,‘哥倫比亞’) #定義元組
print(“您好,歡迎光臨 ~ 伊米咖啡館 ~\n\n我店有: \n”)
for name in coffeename: #遍歷元組
print(name + “咖啡”,end= " ")
### 實例訓練22 -分兩列顯示某賽季NBA西部聯盟前八名球隊
print(“某賽季NBA西部聯盟前八名\n”)
team = (“火箭”,“勇士”,“開拓者”,“雷霆”,“爵士”,“鵜鶘”,“馬刺”,“森林狼”)
for index,item in enumerate(team):
if index%2 == 0: #判斷是否為偶數,為偶數時不換行
print(item +“\t\t”,end=‘’)
else:
print(item + “\n”) #換行輸出

### 實例訓練23 -將麝香貓咖啡替換為拿鐵咖啡
coffeename = (‘藍山’,‘卡布奇諾’,‘摩卡’,‘曼特寧’,‘麝香貓’,‘哥倫比亞’) #定義元組
coffeename[4] = ‘拿鐵’ #將"麝香貓",替換為"拿鐵"
print(coffeename)

### 注意:通過這個實驗就可以看出元組是無法直接修改的,需要修改得重新賦值,如:
coffeename = (‘藍山’,‘卡布奇諾’,‘摩卡’,‘曼特寧’,‘麝香貓’,‘哥倫比亞’) #定義元組
coffeename = (‘藍山’,‘卡布奇諾’,‘摩卡’,‘曼特寧’,‘拿鐵’,‘哥倫比亞’) #定義元組
print(coffeename)
### 二、字典
Python中的字典(Dictionary)是一種內置的數據結構,它存儲鍵值對(key-value pairs)。字典中的每個鍵都與一個值相關聯,且鍵必須是唯一的。以下是關于Python字典的一些基本操作:### 1、字典的創建和刪除### ① 創建字典:
- 字典可以通過花括號 `{}` 或者 `dict()` 函數來創建。
- 鍵值對用冒號 `:` 分隔,鍵值對之間用逗號分隔。```python
# 使用花括號創建
my_dict = {'name': 'Alice', 'age': 25}# 使用dict()函數創建
my_dict = dict(name='Alice', age=25)# 空字典
empty_dict = {}
② 刪除字典:
- 可以使用
del
語句或者clear()
方法來刪除整個字典。 - 也可以使用
pop()
或popitem()
方法來刪除字典中的單個元素。
# 刪除整個字典
del my_dict# 清空字典
my_dict = {'a': 1, 'b': 2}
my_dict.clear() # 清空字典后,my_dict 變為 {}# 刪除單個鍵值對
my_dict = {'a': 1, 'b': 2}
my_dict.pop('a') # 刪除鍵 'a' 及其對應的值,返回值 1
my_dict.popitem() # 刪除并返回一個鍵值對,字典變為 {}
實例訓練24 -創建一個保存女神星座的字典
name = ['綺夢','冷伊一','香凝','黛蘭'] #作為鍵的列表
sign = ['水瓶座','射手座','雙魚座','雙子座'] #作為值的列表
dictionary = dict(zip(name,sign)) #轉換為字典
print(dictionary) #輸出轉換后字典
2、通過鍵值對訪問字典
可以通過鍵來訪問字典中的值。
my_dict = {'name': 'Alice', 'age': 25}
print(my_dict['name']) # 輸出:Alice
如果嘗試訪問不存在的鍵,會拋出 KeyError
。為了避免這個錯誤,可以使用 get()
方法,它允許你設置一個默認值。
print(my_dict.get('name', 'Default Name')) # 輸出:Alice
print(my_dict.get('gender', 'Default Gender')) # 輸出:Default Gender
3、遍歷字典
可以遍歷字典的鍵、值或鍵值對。
my_dict = {'name': 'Alice', 'age': 25}# 遍歷鍵
for key in my_dict:print(key)# 遍歷值
for value in my_dict.values():print(value)# 遍歷鍵值對
for key, value in my_dict.items():print(key, value)
4、添加、修改和刪除字典元素
① 添加元素:
- 直接賦值即可添加新的鍵值對。
dictionary = dict((('綺夢','水瓶座'),('冷伊一','射手座'),('香凝','雙魚座'),('黛蘭','雙子座')))
dictionary["碧綺"] = "巨蟹座" #添加一個元素
print(dictionary)
② 修改元素:
- 如果鍵已存在,賦值會更新其對應的值。
dictionary = dict((('綺夢','水瓶座'),('冷伊一','射手座'),('香凝','雙魚座'),('黛蘭','雙子座')))
dictionary["香凝"] = "天蝎座" #添加一個元素,當元素存在時,則相當于修改功能
print(dictionary)
③ 刪除元素:
- 使用
del
語句、pop()
或popitem()
方法刪除元素。
dictionary = dict((('綺夢','水瓶座'),('冷伊一','射手座'),('香凝','雙魚座'),('黛蘭','雙子座')))
del dictionary["香凝"] #刪除一個元素
print(dictionary)
當刪除一個不存在的鍵時,會報錯異常:
dictionary = dict((('綺夢','水瓶座'),('冷伊一','射手座'),('香凝','雙魚座'),('黛蘭','雙子座')))
del dictionary["香凝2"] #刪除一個元素
print(dictionary)
避免這個異常,可以做一下修改:
dictionary = dict((('綺夢','水瓶座'),('冷伊一','射手座'),('香凝','雙魚座'),('黛蘭','雙子座')))
if "香凝2" in dictionary: #如果存在del dictionary["香凝2"] #刪除一個元素
print(dictionary)
5、字典推導式
字典推導式提供了一種優雅的方式來創建字典。
# 創建一個平方數字典
squares = {x: x**2 for x in range(6)}
print(squares) # 輸出:{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
字典推導式可以包含條件語句:
# 創建一個只包含偶數的平方數字典
even_squares = {x: x**2 for x in range(6) if x % 2 == 0}
print(even_squares) # 輸出:{0: 0, 2: 4, 4: 16}
實例訓練25 -應用字典推導式實現根據名字和星座創建一個字典
name = ['綺夢','冷伊一','香凝','黛蘭'] #作為鍵的列表
sign = ['水瓶','射手','雙魚','雙子'] #作為值的列表
dictionary = {i:j+'座' for i,j in zip(name,sign)} #使用列表推導式生成字典
print(dictionary) #輸出轉換后字典
以上就是Python字典的基本操作,包括創建、刪除、訪問、遍歷、修改以及使用字典推導式。字典是Python中非常強大和靈活的數據結構,適用于各種場景。