Python3的列表推導式、字典推導式、集合推導式和元組推導式,以及相應習題 ...
Python 推導式
參考文章:[1] (Python 推導式 | 菜鳥教程)
Python推導式是一種獨特的數據處理方式 可以從一個序列構建另一個新的數據序列的結構體
1 列表推導式
1.1 基本格式
[表達式 for 變數 in 列表]
或
[表達式 for 變數 in 列表 if 條件]
'''
1. 表達式
可以是具有返回值的函數
2. for 變數 in 列表
迭代列表將變數傳入表達式中
3. if 條件
過濾列表中不符合條件的值
'''
1.2 參考實例
# 從列表中提取首字母小於c的元素,並以全體大寫的形式存儲在另一個列表中
elements = ['Omega', 'mu', 'alpha', 'beta', 'pi', 'sigma']
temp = [element.upper() for element in elements if element[0'] < 'c']
for i in temp:
print(i)
'''
運行結果:
OMEGA
ALPHA
BETA
'''
# 計算1-30內可以被3整除的整數
mylist = [i for i in range(1, 31) if i % 3 == 0]
print(i)
'''
運行結果:
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
'''
# 創建列表[(0,1),(1,2),(2,3),(3,4),(4,5),(5,6)]
res = [(i, i+1) for i in range(0, 6)]
print(res)
'''
運行結果:''
[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]
'''
# 應用列表推導式,去除列表中成績小於80的字典
dict_list = [{"科目": "高等數學", "成績": 96},
{"科目": "大學物理", "成績": 90},
{"科目": "線性代數", "成績": 91},
{"科目": "大學英語", "成績": 75},
{"科目": "分析化學", "成績": 81},
{"科目": "有機化學", "成績": 76}]
res = [d for d in dict_list if d["成績"] >= 80]
print(res)
'''
運行結果:
[{'科目': '高等數學', '成績': 96},
{'科目': '大學物理', '成績': 90},
{'科目': '線性代數', '成績': 91},
{'科目': '分析化學', '成績': 81}]
'''
2 字典推導式
2.1 基本格式
{鍵表達式:值表達式 for 變數 in 某表}
或
{鍵表達式:值表達式 for 變數 in 某表 if 條件}
2.2 參考實例
# 通過字典推導式,顛倒字典的鍵名和值
dict_list = {"科目": "高等數學", "成績": 96}
res = {v:k for k,v in dict_list.items()}
print(res)
'''
運行結果:
{'高等數學': '科目', 96: '成績'}
'''
# 使用字元串及其長度創建字典
mylist = ['MySQL', 'Python', 'C++', 'Java', 'HTML', 'CSS']
mydict = {k: len(k) for k in mylist}
print(mydict)
'''
運行結果:
{'MySQL': 5, 'Python': 6, 'C++': 3, 'Java': 4, 'HTML': 4, 'CSS': 3}
'''
# 生成一個包含5個隨機數的字典
import random
res = {k: random.randint(10, 100) for k in range(1, 7)}
print(res)
'''
運行結果:
{1: 39, 2: 60, 3: 40, 4: 44, 5: 42, 6: 96}
'''
# 將兩個長度相同的列表合併成字典
course = ['Python', 'MySQL', 'Java', 'Javascript', 'HTML']
score = [99, 89, 80, 60, 60]
course_score = {k: v for k, v in zip(course, score)}
print(course_score)
'''
運行結果:
{'Python': 99, 'MySQL': 89, 'Java': 80, 'Javascript': 60, 'HTML': 60}
'''
3 集合推導式
3.1 基本格式
{表達式 for 項目 in 序列}
或
{表達式 for 項目 in 序列 if 條件}
3.2 參考實例
# 提取是Python的字母並存儲
res = {v for v in 'pdyftaahdofgng' if v in 'python'}
print(res)
'''
運行結果:
{'o', 'y', 'h', 't', 'p', 'n'}
'''
# 獲取字元串的長度,並去重
course = ['Python', 'MySQL', 'Java', 'Javascript', 'HTML']
res = {len(item) for item in course}
print(res)
'''
運行結果:
{10, 4, 5, 6}
'''
# 計算數字3,4,5的立方數
res = {v**3 for v in range(3, 6)}
print(res)
'''
運行結果:
{64, 27, 125}
'''
4 元組推導式
4.1 基本格式
'''
元組推導式返回生成器對象
可以使用函數tuple()直接將生成器對象轉換成元組
'''
(表達式 for 項目 in 序列)
或
(表達式 for 項目 in 序列 if 條件)
4.2 參考實例
# 計算數字3,4,5的立方數
res = (v**3 for v in range(3, 6))
print(tuple(res))
'''
運行結果:
(27, 64, 125)
'''