2

CoffeeScript 列表推导与 Python 略有不同……人们喜欢返回列表推导的方式是哪一种?

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]

在 Python 中,我只想写:

return [elem+1 for elem in [1,2,3]]

它会正确返回列表,而不是列表列表,就像在 CoffeeScript 中那样。

4

2 回答 2

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]

好吧,在三个选项中,当然是#3。但最好的风格选择实际上是这样的:

elem+1 for elem in [1,2,3] # returns [2,3,4]

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

于 2011-04-24T21:46:44.403 回答
2

我从来没有使用过 CoffeeScript,但如果我的选项得到了错误的结果,做一个愚蠢的[...].pop()kludge 或者只是使用一组括号,我会选择括号。

于 2011-04-24T19:47:56.343 回答