Python程序员联盟程序猿阵线联盟-汇总各类技术干货

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

2018-04-19  本文已影响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需要用*解压为两个元组。

上一篇 下一篇

猜你喜欢

热点阅读