wol*_*lak 14 python functional-programming
在Ruby中,我习惯使用Enumerable#inject来查看列表或其他结构,然后回过头来了解一下.例如,
[1,3,5,7].inject(true) {|allOdd, n| allOdd && n % 2 == 1}
Run Code Online (Sandbox Code Playgroud)
确定数组中的每个元素是否都是奇数.在Python中完成同样的事情的适当方法是什么?
Tri*_*ych 24
为了确定每个元素是否都是奇数,我会使用 all()
def is_odd(x):
return x%2==1
result = all(is_odd(x) for x in [1,3,5,7])
Run Code Online (Sandbox Code Playgroud)
但是,一般来说,Ruby inject最像Python reduce():
result = reduce(lambda x,y: x and y%2==1, [1,3,5,7], True)
Run Code Online (Sandbox Code Playgroud)
all()在这种情况下是首选,因为它一旦找到类似False值就能够转义循环,而reduce解决方案必须处理整个列表才能返回答案.
听起来像reducePython或fold(r|l)'?'Haskell.
reduce(lambda x, y: x and y % == 1, [1, 3, 5])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6318 次 |
| 最近记录: |