用zip實現map,包含生成器的方式

    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})

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章