在Python中,什么等同于Ruby的Array.each方法?Python有一个很好的简短的闭包/ lambda语法吗?
[1,2,3].each do |x|
puts x
end
Run Code Online (Sandbox Code Playgroud)
aba*_*ert 37
Python有一个很好的简短的闭包/ lambda语法吗?
是的,但在这种情况下你不需要它.
与Ruby代码最接近的等价物是:
new_values = map(print, [1, 2, 3])
Run Code Online (Sandbox Code Playgroud)
当你已经有一个功能时,这看起来很不错,比如print.如果你只是有一些任意的表达式并且想要使用它map,你需要使用a def或a 创建一个函数lambda,如下所示:
new_values = map(lambda x: print(x), [1, 2, 3])
Run Code Online (Sandbox Code Playgroud)
那是你显然想要避免的丑陋.Python有一个避免它的好方法:理解:
new_values = [print(x) for x in values]
Run Code Online (Sandbox Code Playgroud)
但是,在这种情况下,您只是尝试为每个值执行一些语句,而不是为每个值累积新值.所以,虽然这会起作用(你会得到一个None值列表),但它绝对不是惯用的.
在这种情况下,正确的做法是明确地写它 - 没有闭包,没有函数,没有理解,只是一个循环:
for x in values:
print x
Run Code Online (Sandbox Code Playgroud)