博友們,你們好,很高興能在這里和大家分享技術文章,我是
Amo Xiang,是一名在職企業員工,Amo來源于上家公司的英文名,本意是愛,作為剛入行幾年互聯網行業的小白,博主寫博客一方面是為了記錄自己的學習程序以及所犯的錯誤,更多的是希望能夠幫助到很多處于起步階段的萌新,讓他們少走彎路,在撰寫文章時,參考了大量書籍及一些互聯網大佬的資源,并結合了自己的作業經驗,博主本著科學、嚴謹的態度、力求精益求精,但疏漏之處在所難免,敬請廣大博友批評指正,博客主頁:https://blog.csdn.net/xw1680?spm=1011.2124.3001.5113
目錄
- 1. zip() 函式的介紹
- 1.1 功能
- 1.2 語法
- 2. zip() 函式的應用
- 2.1 用 zip() 函式實作串列合并
- 2.2 使用 zip() 函式建立字典
- 2.3 zip() 函式妙用 1--- 矩陣的旋轉
- 2.4 zip() 函式妙用 2--- 矩陣的行列轉置
- 2.5 zip() 函式妙用 3--- 將 4×3 矩陣轉置成 3×4 矩陣
- 2.6 通過序列的解壓執行 zip() 函式的反操作
- 2.7 輸出字典中值最大所對應的鍵
1. zip() 函式的介紹
1.1 功能
zip() 函式用于將可迭代的物件作為引數,將物件中對應的元素打包成一個個元組,然后回傳由這些元組組成的 zip 物件,
1.2 語法
zip(*iterables) --> zip object
引數說明:
(1) iterables:可迭代物件,如串列、字典、元組、字串等,zip() 函式允許多個可迭代物件作為引數,
(2) 當 zip() 函式沒有引數時,則回傳空的迭代器,
(3) 當 zip() 函式只有一個引數時,則從引數中依次取一個元素組成一個元組,再將依次組成的元組組合成一個新的迭代器,
(4) 當 zip() 函式有兩個引數時,分別從兩個引數中依次各取出一個元素組成元組,再將依次組成的元組組合成一個新的迭代器,
(5) 回傳值:回傳一個可迭代的 zip 物件,其內部元素為元組,可以使用 list() 函式 或 tuple() 函式將其轉換為串列或元組,
2. zip() 函式的應用
2.1 用 zip() 函式實作串列合并
下面使用 zip() 函式實作將兩個串列進行合并,例如,將 name_list、age_list 兩個串列合并,代碼如下:
name_list = ["Amo", "Paul", "Jason", "Seven"]
age_list = [18, 19, 20, 21]
# 輸出 ==> [('Amo', 18), ('Paul', 19), ('Jason', 20), ('Seven', 21)]
print(list(zip(name_list, age_list)))
2.2 使用 zip() 函式建立字典
有兩個串列 name_list 和 score_list,其中 name_list 中存盤著學生姓名,score_list 存盤著每個學生的考試成績,如果要通過某個學生姓名來查找其考試成績,則需要一個字典,zip() 函式可以很方便地建立字典,代碼如下:
name_list = ["Amo", "Paul", "Jason", "Seven"] # 定義串列name_list
score_list = [80, 96, 77, 88] # 定義成績
my_dict = dict(zip(name_list, score_list)) # 使用dict()函式將zip物件轉換為字典
print(my_dict["Amo"]) # 輸出 80
2.3 zip() 函式妙用 1— 矩陣的旋轉
矩陣是高等數學中的常見工具,也常用于統計分析和數學應用中,下面使用 zip() 函式實作一個 xyz 的矩陣的旋轉,代碼如下:
x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
xyz = list(zip(x, y, z))
print(xyz) # 輸出 ==> [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
2.4 zip() 函式妙用 2— 矩陣的行列轉置
矩陣的轉置是矩陣的一種運算,在矩陣的所有運演算法則中占有重要地位,例如,把矩陣 A 的行和列互相交換所產生的的矩陣稱為 A 的轉置矩陣,這一程序稱為矩陣的轉置,下面實作將 xyz 矩陣進行轉置,代碼如下:
x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
xyz = list(zip(x, y, z))
print(xyz)
for a, b, c in zip(x, y, z):
print(f"{a},{b},{c}")
2.5 zip() 函式妙用 3— 將 4×3 矩陣轉置成 3×4 矩陣
data1 = ((0, 1, 2), (3, 4, 5), (6, 7, 8), (9, 10, 11))
data2 = zip(*data1)
print(type(data2)) # <class 'zip'>
print(tuple(data2)) # 輸出 ==> ((0, 3, 6, 9), (1, 4, 7, 10), (2, 5, 8, 11))
2.6 通過序列的解壓執行 zip() 函式的反操作
在某些情況下,我們需要執行相反的操作 — 解壓序列,解壓操作涉及將壓縮后的元素恢復為其原始狀態,可以添加 * 運算子到函式呼叫中,代碼如下:
a = (1, 2, 3)
b = (10, 20, 30)
L = list(zip(a, b))
print(f"obj = {L}")
c, d = list(zip(*L)) # 使用*解壓序列
print(f"c = {c} \nd = {d}")
if a == c and b == d:
print("兩次 zip() 等于啥都沒干......")
2.7 輸出字典中值最大所對應的鍵
在一個字典當中,求值最大所對應的鍵時,zip() 函式就派上了大用場,代碼如下:
data = {"張三": 100, "李四": 20, "王五": 500, "趙六": 12}
obj = zip(data.values(), data.keys())
# 輸出:分數最高的學生姓名為: 王五
print(f"分數最高的學生姓名為: {max(obj)[1]}")
感謝您閱讀本篇博文,希望本文能成為您編程路上的領航者,祝您閱讀愉快!

好書不厭讀百回,熟讀課思子自知,而我想要成為全場最靚的仔,就必須堅持通過學習來獲取更多知識,用知識改變命運,用博客見證成長,用行動證明我在努力,
如果我的博客對你有幫助、如果你喜歡我的博客內容,請點贊、評論、收藏一鍵三連哦!聽說點贊的人運氣不會太差,每一天都會元氣滿滿呦!如果實在要白嫖的話,那祝你開心每一天,歡迎常來我博客看看,
?編碼不易,大家的支持就是我堅持下去的動力,點贊后不要忘了關注我哦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/233110.html
標籤:其他
