Python中inject()的等价项?

2024-05-21 15:45:10 发布

您现在位置:Python中文网/ 问答频道 /正文

在Ruby中,我习惯使用Enumerable#inject来浏览列表或其他结构,然后得出一些关于它的结论。例如

[1,3,5,7].inject(true) {|allOdd, n| allOdd && n % 2 == 1}

以确定数组中的每个元素是否为奇数。在Python中完成相同任务的合适方法是什么?


Tags: 方法true元素列表数组结构injectruby
3条回答

听起来像Python中的reduce或Haskell中的fold(r|l)'?'

reduce(lambda x, y: x and y % == 1, [1, 3, 5])

我想您可能想使用all,它比inject更通用。reduce是相当于inject的Python。

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解决方案则必须处理整个列表才能返回答案。

相关问题 更多 >