s1 = 'abc'
s2 = 'xyz123'
print(list(zip(s1, s2)))
print(list(map(abs, [-2, -1, 0, 1, 2])))
print(list(map(pow, [1, 2, 3], [2, 3, 4, 5])))
def my_map(func, *args):
res = []
for i in zip(*args):
res.append(func(*i))
return res
def my_map2(func, *args):
return [func(*i) for i in zip(*args)]
# 使用生成器
def my_map3(func, *args):
res = []
for i in zip(*args):
yield func(*i)
def my_map4(func, *args):
return (func(*i) for i in zip(*args))
print('my_map:')
print(my_map(abs, [-2, -1, 0, 1, 2]))
print(my_map2(abs, [-2, -1, 0, 1, 2]))
# 包含到 一個list中調用,強迫一次生成所有的值
print('生成器方式:')
print(list(my_map3(abs, [-2, -1, 0, 1, 2])))
print(list(my_map4(abs, [-2, -1, 0, 1, 2])))
輸出:
[('a', 'x'), ('b', 'y'), ('c', 'z')]
[2, 1, 0, 1, 2]
[1, 8, 81]
my_map:
[2, 1, 0, 1, 2]
[2, 1, 0, 1, 2]
生成器方式:
[2, 1, 0, 1, 2]
[2, 1, 0, 1, 2]
*args
是可變參數,args接收的是一個tuple;
調用函數時如何傳入可變參數語法:
可變參數既可以直接傳入:func(1, 2, 3)
,又可以先組裝list或tuple,再通過*args
傳入:func(*(1, 2, 3))
;
關鍵字:
使用兩個星號,如:**kw
是關鍵字參數,kw接收的是一個dict。
關鍵字參數既可以直接傳入:func(a=1, b=2)
,又可以先組裝dict,再通過**kw
傳入:func(**{'a': 1, 'b': 2})