使用python map和其他功能工具

发布于 2021-01-29 18:43:00

这相当不错,但是我正在尝试学习/理解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

问:有没有一种方法可以在python中使用map或任何其他功能工具来产生以下内容而没有循环等。

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]
...

PS:我知道如何使用if,循环和/或生成器天真地做到这一点,但是我想学习如何使用功能性工具来实现这一点。
这仅仅是在maptest中添加if语句或在maptest内部将其他过滤器映射应用于bar的一种情况?

关注者
0
被浏览
51
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    最简单的方法是不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)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看