多個元組、列表、字典等舊迭代器
組合成新迭代器
1
.壓縮:zip
()函式
zip函式有乙個引數:從迭代器中依次取乙個元組,組成乙個元組。
zip函式有兩個引數:zip
(a,b)函式分別從a和b中取乙個元素組成元組,再次將組成的元組組合成乙個新的迭代器。
(1)維數相同:正常組合對應位置的元素。
(2)維數不同:取兩者中的最小的行列數
應用:a.矩陣點乘 & 相加(對應位置相乘/加)
b.列表元素依次相連
c.⚠️zip反轉字典,使用dict
()函式
print
("-"*20
+"zip()函式的用法"
+"-"*20
)# 1.當zip()函式中只有乙個引數時,zip(iterable)從迭代器中依次取乙個元組,組成乙個元組。
mylist =[1
,2,3
,4]print
(zip
(mylist))#
print
(type
(zip
(mylist)))
# print
(list
(zip
(mylist)))
# [(1,), (2,), (3,), (4,)]
# 2.當zip()函式有兩個引數時,zip(a,b)函式分別從a和b中取乙個元素組成元組,再次將組成的元組組合成乙個新的迭代器。
# a與b的維數相同時,正常組合對應位置的元素。
# 當a與b行或列數不同時,取兩者中的最小的行列數。
m =[[1
,2,3
],[4
,5,6
],[7
,8,9
]]n =[[1
,1,1
],[2
,2,3
],[3
,3,3
]]p =[[1
,1,1
],[2
,2,2
]]# 維數相同
print
(list
(zip
(m, n)))
# [([1, 2, 3], [1, 1, 1]), ([4, 5, 6], [2, 2, 3]), ([7, 8, 9], [3, 3, 3])]
# 維數不同
print
(list
(zip
(m, p)))
# [([1, 2, 3], [1, 1, 1]), ([4, 5, 6], [2, 2, 2])]
print
("-"*20
+"zip()函式的應用"
+"-"*20
)# 矩陣相加減、點乘(for迴圈 + 列表生成式)
# 矩陣的相乘(點乘/點積)
matrix_multi =
[x * y for a, b in
zip(m, n)
for x, y in
zip(a, b)
]print
("矩陣點乘:\n"
, matrix_multi)
# [1, 2, 3, 8, 10, 18, 21, 24, 27]
# 矩陣相加
matrix_add =
[x + y for a, b in
zip(m, n)
for x, y in
zip(a, b)
]print
("矩陣相加:\n"
, matrix_add)
# [2, 3, 4, 6, 7, 9, 10, 11, 12]
# 列表元素依次相連
l =[
'a',
'b',
'c',
'd',
'e',
'f']
print
("列表元素依次相鏈結果:"
,list
(zip
(l[:-1
], l[1:
])))
2
.解壓縮:*
zip(
*iterables)函式
*zip
()函式是zip
()函式的逆過程,將zip物件變成原先組合前的資料。
print
("-"*20
+"*zip(*iterables)函式的應用"
+"-"*20
)# print(list(zip(*(m, n)))) # ([1, 2, 3], [1, 1, 1]) ([4, 5, 6], [2, 2, 3]) ([7, 8, 9], [3, 3, 3])
print(*
zip(m, n)
)m2, n2 =
zip(*(
zip(m, n)))
print
('m2是否是m'
, m ==
list
(m2)
)# true
print
('n2是否是n'
, n ==
list
(n2)
)# true
c 基礎知識7 函式過載
過載函式 含義 c語言中,函式如果重名會報錯。c 則引入了函式過載。編譯器將所有同名函式作為候選者,精確匹配實參 通過預設引數匹配實參 通過預設型別轉換匹配實參等等,尋找到正確的函式 如果匹配到不唯一或匹配不到,則編譯錯誤。本質 通過編譯後生成的obj檔案進行分析,可以看到同名函式在符號表中有不同的...
python基礎知識梳理 7函式
基本內容梳理 1 函式定義,函式名,函式體以及函式的呼叫方式 2 函式的返回值 3 函式的引數 4 函式 動態傳引數 5 命名空間,區域性名稱的載入順序,全域性命名空間,作用域,載入順序 6 函式的巢狀 7 gloabal,nonlcal關鍵字 一 函式的定義,函式名,函式體以及函式的呼叫方式 1 ...
函式基礎知識
1.函式呼叫 注意函式名稱,引數個數,引數資料型別 2.函式定義 def 函式名 引數 函式體return 返回值 函式中也可以直接使用pass,意為什麼也不做,目的是讓程式能夠執行不報錯 python有一點值得注意,返回值可以為多個,例如 d def get weight and height d...