2024-05-21 15:45:10 发布
网友
在Ruby中,我习惯使用Enumerable#inject来浏览列表或其他结构,然后得出一些关于它的结论。例如
[1,3,5,7].inject(true) {|allOdd, n| allOdd && n % 2 == 1}
以确定数组中的每个元素是否为奇数。在Python中完成相同任务的合适方法是什么?
听起来像Python中的reduce或Haskell中的fold(r|l)'?'。
reduce
fold(r|l)'?'
reduce(lambda x, y: x and y % == 1, [1, 3, 5])
我想您可能想使用all,它比inject更通用。reduce是相当于inject的Python。
all
inject
all(n % 2 == 1 for n in [1, 3, 5, 7])
为了确定每个元素是否都是奇数,我将使用^{}
def is_odd(x): return x%2==1 result = all(is_odd(x) for x in [1,3,5,7])
不过,一般来说,Ruby的inject最像Python的^{}:
result = reduce(lambda x,y: x and y%2==1, [1,3,5,7], True)
在这种情况下,首选all(),因为一旦找到类似False的值,它将能够转义循环,而reduce解决方案则必须处理整个列表才能返回答案。
all()
False
听起来像Python中的
reduce
或Haskell中的fold(r|l)'?'
。我想您可能想使用
all
,它比inject
更通用。reduce
是相当于inject
的Python。为了确定每个元素是否都是奇数,我将使用^{}
不过,一般来说,Ruby的} :
inject
最像Python的^{在这种情况下,首选
all()
,因为一旦找到类似False
的值,它将能够转义循环,而reduce
解决方案则必须处理整个列表才能返回答案。相关问题 更多 >
编程相关推荐