例子
#!/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需要用*解压为两个元组。
网友评论