CoffeeScript列表理解/数组理解

Geo*_*off 2 coffeescript

CoffeeScript列表推导与Pythons略有不同......这些是人们喜欢返回列表推导的方式?

return elem+1 for elem in [1,2,3] # returns 3+1
return [elem+1 for elem in [1,2,3]].pop() # returns [2,3,4]
return (elem+1 for elem in [1,2,3]) # returns [2,3,4]
Run Code Online (Sandbox Code Playgroud)

在Python中,我只想写:

return [elem+1 for elem in [1,2,3]]
Run Code Online (Sandbox Code Playgroud)

并且它正确地返回列表,而不是列表列表,就像在CoffeeScript中一样.

Tre*_*ham 9

以下哪些是人们喜欢返回列表理解的方式?

return elem+1 for elem in [1,2,3] # returns 3+1
return [elem+1 for elem in [1,2,3]].pop() # returns [2,3,4]
return (elem+1 for elem in [1,2,3]) # returns [2,3,4]
Run Code Online (Sandbox Code Playgroud)

那么,在三个选项中,肯定是#3.但最好的风格选择实际上是这样的:

elem+1 for elem in [1,2,3] # returns [2,3,4]
Run Code Online (Sandbox Code Playgroud)

作为函数的最后一行,任何表达式expr都相当于return (expr).该return关键字很少需要.