【发布时间】:2016-10-10 10:57:52
【问题描述】:
我是 Java 程序员。几天前我开始学习 Python。 我想知道:是否有任何等价物
map.forEach(System.out::println)
在 Python 中使用 lambda? 或仅使用 for 循环:
for e in map: print(e)
【问题讨论】:
标签: java python python-3.x lambda
我是 Java 程序员。几天前我开始学习 Python。 我想知道:是否有任何等价物
map.forEach(System.out::println)
在 Python 中使用 lambda? 或仅使用 for 循环:
for e in map: print(e)
【问题讨论】:
标签: java python python-3.x lambda
没有等效于 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)
【讨论】:
Python 还有一个map 函数,它使用语法map(function, iterable, ...)
请参阅 Python 文档:https://docs.python.org/2/library/functions.html#map
【讨论】: