使用python map等功能工具

问题:

这是非常不错的,但我正在尝试学习/理解python中的函数式编程。以下代码:

foos = [1.0,2.0,3.0,4.0,5.0]
bars = [1,2,3]

def maptest(foo, bar):
    print foo, bar

map(maptest, foos, bars)

生产:

1.0 1
2.0 2
3.0 3
4.0 None
5.0 None

 Q.有没有办法使用地图或任何其他功能工具在python中产生以下无循环等。

1.0 [1,2,3]
2.0 [1,2,3]
3.0 [1,2,3]
4.0 [1,2,3]
5.0 [1,2,3]

 正如一个侧面说明,如果foo和bar之间有依赖关系,实现将如何改变。例如

foos = [1.0,2.0,3.0,4.0,5.0]
bars = [1,2,3,4,5]

 并打印:

1.0 [2,3,4,5]
2.0 [1,3,4,5]
3.0 [1,2,4,5]
...

 P.S:我知道如何天真地使用if,循环和/或生成器,但我想学习如何使用功能工具来实现相同的使用。是否只是在maptest中添加一个if语句来映射测试或应用另一个过滤器映射到内部的情况?

回答:

最简单的方法是不要通过bars通过不同的功能,而是直接从maptest访问它

foos = [1.0,2.0,3.0,4.0,5.0]
bars = [1,2,3]

def maptest(foo):
    print foo, bars

map(maptest, foos)

使用您的原始maptest功能,您也可以在map中使用lambda函数

map((lambda foo: maptest(foo, bars)), foos)

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Using python map and other functional tools

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 1 = 1