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.forEach
或 Stream.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 等价物是啥?