美文网首页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