map reduce zip三個內建函式

2021-09-25 00:21:12 字數 3420 閱讀 6761

def printline(content,sign):

"""列印一條分割線

:param content: 分割線中你想要填寫的內容 格式:例如:------ 解壓 --------

:param sign: 用什麼符號分割 「-」、「*」。。。

:return:

"""print('{}'.format(sign)*50,end='')

print(content,end='')

print('{}'.format(sign)*50)

"""map :map(函式,可迭代資料,可迭代資料,可迭代資料,''')

: 最主要的作用是並行,以及zip就是用來進行併發運算的、迭代等;

map會 根據指定的函式對指定迭代器進行對映;

map中指定函式的引數個數,與後面的集合數必須對應,但是集合中的個數可以不同

"""printline('map','-')

def addnum(a, b, c, d):

return a + b * c * d

ret = map(addnum, [1, 2, 3, 4, 5], [5, 4, 3, 2, 1], [5, 4, 3, 2, 1], (0, 0, 0, 0, 1))

for i in ret:

print(i) # 1 2 3 4 5 6

def func(x, y):

return x, y

ret = map(func, [1, 2, 3], [1, 2, 4, 5]) # 當個數不匹配時返回 在對應位置返回空值

print(list(ret)) # [(1, 1), (2, 2), (3, 4)]

ret = map(lambda x: x ** 2, [2, 3, 4])

print(list(ret)) # [4, 9, 16]

ret = map(lambda x, y, z: x + y + z, [2, 3, 4], [3, 4, 5], [4, 5, 6])

print(list(ret)) # [9, 12, 15]

"""****************** reduce() **********************

"""printline('reduce','*')

from functools import reduce

def func(a, b):

return a + b

ret = reduce(func, [1, 2, 3, 4, 5]) # 15

print(ret)

"""reduce(函式,可迭代資料,初始值(initial)),在python3之後就不是內建函式了需要匯入

過程:1、取 1、2 ,傳進函式, 得到返回值 3 ;

2、取 3、3 ,傳進函式, 得到返回值 6 ;

1、取 6、4 ,傳進函式, 得到返回值 10 ;

1、取 10、5 ,傳進函式, 得到返回值 15 ;

也就是:從左到右對乙個序列的項累計地應用有兩個引數的函式,以此合併序列到乙個單一值。

"""# 高階 將乙個列表拼成乙個整數

ret = reduce(lambda x, y: x * 10 + y, [1, 2, 3, 4, 5])

print(ret) # 12345

# 再高階

person = (,,

,,

)'''

#這部分**會出錯,報錯內容:typeerror: 'int' object is not subscriptable

def func(p1,p2):

ret = p1['age']+p2['age']

return ret

ret = reduce(func,person)

print(ret)

原因: 在第一執行的時候,p1=,,p2=

p1['age'] = 21 , p2['age'] = 51 返回:72

第二次執行的時候 func函式中第乙個引數p1成了 72,是乙個整數,它就沒有['age']這個鍵了就會報錯

'''# 所以在此我們要設立乙個初始值0,這樣p1就一直是乙個整數了,就不影響執行了

def func(p1,p2):

ret = p1+p2['age']

return ret

ret = reduce(func,person,0)

print(ret) #264

"""zip(): zip(iterable1,iterable2,iterable3,iterable4''')

將可迭代函式作為引數,對應元素打包成乙個元組,並組成乙個物件。如果要迭代的個數一樣,

返回長度與最短可迭代物件相等,返回值是zip型別資料

"""printline('壓縮','-')

a = [1,2,3,4]

b = ['a,','b','c','d']

c = [6,7,8,9,10]

zip1 = zip(a,b)

print(list(zip1),type(zip1)) #[(1, 'a,'), (2, 'b'), (3, 'c'), (4, 'd')] zip2 = zip(a,c)

print(list(zip2)) #[(1, 6), (2, 7), (3, 8), (4, 9)] 按短的來

zip3 = zip(a,b,c)

print(list(zip3)) # [(1, 'a,', 6), (2, 'b', 7), (3, 'c', 8), (4, 'd', 9)]

zip4 = zip(zip1,zip2)

print(list(zip4)) # 將兩個zip物件zip,結果是空

# 解壓 *zip( zip 物件)

printline('解壓','-')

zip5 = zip(a,b)

print(list(zip5)) # 壓縮 [(1, 'a,'), (2, 'b'), (3, 'c'), (4, 'd')]

zip_jie = zip(*zip(a,b)) # 解壓

print(list(zip_jie)) #[(1, 2, 3, 4), ('a,', 'b', 'c', 'd')]

print(list(zip(zip(*zip(a,b))))) # [((1, 2, 3, 4),), (('a,', 'b', 'c', 'd'),)]

# zip 物件是乙個迭代器

printline('zip迭代器','+')

a_b = zip(a,b)

for i in a_b:

print(i) #(1, 'a,') 、(2, 'b')、(3, 'c')、(4, 'd')

print(list(a_b)) #

漢語中「三個三個的,你認識多少?」

三個金念鑫 x n 三個水念淼 mi o 三個火念焱 y n 三個土念垚 y o 三個牛念犇 b n 三個手念掱 p 三個目念瞐 m 三個田念畾 l i 三個馬念驫 bi o 三個羊念羴 sh n 三個犬念猋 bi o 三個鹿念麤 c 三個魚念鱻 xi n 三個貝念贔 b 三個力念劦 lie 三個毛...

mysql 三個正規化

原子性。表的元組不可再拆分成更小的元組。非主鍵必須完全依賴主鍵,而不是僅僅依賴主鍵的一部分。舉個例子,美國銷售軍火的時候,對每一樣 根據國家或地區的不同而給出不同的 建個表看看 create table weapon price wp id unsigned int not null auto in...

NYOJ 三個水杯

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述給出三個水杯,大小不一,並且只有最大的水杯的水是裝滿的,其餘兩個為空杯子。三個水杯之間相互倒水,並且水杯沒有標識,只能根據給出的水杯體積來計算。現在要求你寫出乙個程式,使其輸出使初始狀態到達目標狀態的最少次數。輸入第一行乙個整數n...