我是Java程序员。我几天前开始学习Python。 我想知道:是否有任何等价物
map.forEach(System.out::println)
在Python中使用lambdas?
或者只有for循环:
for e in map: print(e)
答案 0 :(得分:5)
没有相当于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)
答案 1 :(得分:0)
Python还有一个map
函数,它使用语法map(function, iterable, ...)
请参阅Python文档:https://docs.python.org/2/library/functions.html#map