美文网首页Python程序员联盟程序猿阵线联盟-汇总各类技术干货
python 一个元组列表map到函数上的正确姿势

python 一个元组列表map到函数上的正确姿势

作者: 一只老梨花 | 来源:发表于2018-04-19 08:50 被阅读18次

    例子

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Date    : 2018-04-17 10:24:34
    # @Author  : Zhu Robin
    
    a = [(1, 2, 3), (4, 5, 6)]
    
    
    def add(a, b, c):
        return a + b + c
    
    print map(add, [i[0] for i in a], [i[1] for i in a], [i[2] for i in a])
    print map(add, *zip(*a))
    print zip(a)
    print zip(*a)
    
    #output [6, 15]
    #output [6, 15]
    #output [((1, 2, 3),), ((4, 5, 6),)]
    #output [(1, 4), (2, 5), (3, 6)]
    #output [Finished in 0.5s]
    
    

    很明显第一种方法很麻烦。

    应用场景

    在使用函数对数据库的数据进行处理的时候
    我们获取的数据库数据可能是这样的。

    sql_data = [(r.name1, r.name2, r.name3) for r in somemodel.select().where(......)]
    

    映射到函数funa进行处理的时候就可以这样:

    result = map(funa, *zip(*sql_data))
    

    Tips

    zip 不懂的点这里
    zip 就是把参数内的多个迭代对象按照index重新组成元组。所以例子中的a需要用*解压为两个元组。

    相关文章

      网友评论

        本文标题:python 一个元组列表map到函数上的正确姿势

        本文链接:https://www.haomeiwen.com/subject/kouikftx.html