Python相当于Ruby Array.each方法

Bud*_*Joe 16 ruby python

在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)


Sha*_*ank 12

最惯用的:

for x in [1,2,3]:
    print x
Run Code Online (Sandbox Code Playgroud)