Python Java forEach 等价物

Posted

技术标签:

【中文标题】Python Java forEach 等价物【英文标题】:Python Java forEach equivalent 【发布时间】:2016-10-10 10:57:52 【问题描述】:

我是 Java 程序员。几天前我开始学习 Python。 我想知道:是否有任何等价物

map.forEach(System.out::println)

在 Python 中使用 lambda? 或仅使用 for 循环:

for e in map: print(e)

【问题讨论】:

【参考方案1】:

没有等效于 Java 的命令式 Iterable.forEachStream.forEach 方法。有一个map 函数,类似于Java 的Stream.map,但它用于将转换应用于可迭代对象。与 Java 的 Stream.map 一样,在您对返回值执行终端操作之前,它实际上不会应用该函数。

你可以滥用map来完成forEach的工作:

list(map(print, iterable))

但这是一个坏主意,从一个不应该有的函数产生副作用并构建一个你不需要的巨大列表。这就像做

someList.stream().map(x -> System.out.println(x); return x;).collect(Collectors.toList())

在 Java 中。

在 Python 中执行此操作的标准方法是循环:

for thing in iterable:
    print(thing)

【讨论】:

【参考方案2】:

Python 还有一个map 函数,它使用语法map(function, iterable, ...)

请参阅 Python 文档:https://docs.python.org/2/library/functions.html#map

【讨论】:

但是为什么这样:a = 1, 2, 3 map(lambda x: print(x), a) - 不会打印任何东西? 看到这个 SO 问题:***.com/questions/7731213/… 我希望它能回答你的问题 :) @Don_Quijote 映射返回一个新列表,其元素数量与原始列表相同。然而 print 函数并没有返回任何东西。因此无法创建此新列表。 @Don_Quijote 但是你可以创建一个新函数 def custom_print(x): print(x); return x 有副作用,然后使用 map(custom_print, a) 但我宁愿不建议这样的做法

以上是关于Python Java forEach 等价物的主要内容,如果未能解决你的问题,请参考以下文章

Java 的 UnsupportedOperationException 的 Python 等价物是啥?

Python 中 Java 的 Mahout 等价物

如何选择Java遍历集合的方式

Java学习笔记5.2.3 List接口 - 遍历集合

在Stata中,foreach x的R等价函数是什么?[关闭]

Java 等价于 Python 字典