当前位置: 首页 > 面试题库 >

使用python map和其他功能工具

卞俊贤
2023-03-14
问题内容

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


问题答案:

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


 类似资料:
  • 8. 其他功能 8.1. 点名 点击菜单栏,选择点名,设置签到的时长后,可发起签到,查看学员的在线听课情况。 8.2. 布局切换 点击菜单栏,选择布局切换,可切换课堂布局,包括讲课模式、主视频模式、视频平铺模式,具体可参见第四章节。 8.3. 课堂设置 点击菜单栏,选择设置,可设置全体禁言、全体下麦、连麦方式、视频清晰度等。 全体禁言 禁止所有学员参与文字聊天。 全体关麦 关闭所有学员的麦克风,学

  • TestMain 在写测试时,有时需要在测试之前或之后进行额外的设置(setup)或拆卸(teardown);有时,测试还需要控制在主线程上运行的代码。为了支持这些需求,testing 提供了 TestMain 函数: func TestMain(m *testing.M) 如果测试文件中包含该函数,那么生成的测试将调用 TestMain(m),而不是直接运行测试。TestMain 运行在主 g

  • 除了上面提到的功能,使用Java 9,JDK平台还有很多增强功能。 其中一些列在下面。 GC(垃圾收集器)改进 Stack-Walking API 过滤传入的序列化数据 弃用Applet API Indify String Concatenation Enhanced Method Handles Java平台日志记录API和服务 紧凑的字符串 Nashorn的Parser API

  • 我安装了android Studio..一切正常。现在突然之间,所有的自动完成功能都不起作用了…我可以在任何地方输入任何东西没有变量检查,没有函数或检查任何东西的帮助。我仍然可以编译这个项目,当它发生时,我会得到错误。 有谁能帮我解决这个问题吗。

  • 主要内容:JEP 338 : Vector  API(Incubator),JEP 347 : 启用 C++14 语言功能,JEP 357/369 : 从 Mercurial 迁移到 GitHub,JEP 380 : Unix 域 Socket 通道JEP 338 : Vector  API(Incubator) JIT Compiler 通过将一些标量运算(一次一项)自动转换为向量运算(一次多项)来优化算术算法。但是开发人员无法控制这个过程。甚至并非所有标量运算都可以转换为向量运算。在这个 J

  • 主要内容:JEP 383 : 外部内存访问 API,JEP 339 : Edwards-Curve数字签名算法(EdDSA),JEP 373 : 重新实现旧版 DatagramSocket API,文本块作为标准,有用的空指针异常JEP 383 : 外部内存访问 API Java 14 允许 Java 程序安全有效地访问 Java 堆之外的外部内存。早期的 mapDB、memcached、ignite java 库提供了外部内存访问。它是一个更清晰的 API,可以无缝地操作所有类型的外部内存(本