Python是否有等同于JavaScript的每种方法?



我试图在文档中搜索类似的方法,但我只能找到python all()和any()。但这是不一样的,因为它只是检查val是否为真而不是像js的every和some方法那样创建你自己的条件。即

// return true if all vals are greater than 1
const arr1 = [2, 3, 6, 10, 4, 23];
console.log(arr1.every(val => val > 1)); // true
// return true if any val is greater than 20
const arr2 = [2, 3, 6, 10, 4, 23];
console.log(arr2.some(val => val > 20)); // true

是否有类似的方法可以在python中做到这一点?

只需将其与映射结构结合使用,在这种情况下,您通常会使用生成器表达式:

arr1 = [2, 3, 6, 10, 4, 23]
print(all(val > 1 for val in arr1))
arr2 = [2, 3, 6, 10, 4, 23]
print(any(val > 20 for val in arr2))

生成器推导式类似于列表推导式,只不过它们创建的是生成器而不是列表。您可以使用列表推导式,但这会创建一个不必要的中间列表。生成器表达式将是常数空间而不是线性空间。如果您想了解更多有关这些相关结构的信息,请参阅对另一个问题的公认答案

或者,尽管我不太习惯地说,您可以使用map:

arr1 = [2, 3, 6, 10, 4, 23]
print(all(map(lambda val: val > 1, arr1)))
arr2 = [2, 3, 6, 10, 4, 23]
print(any(map(lambda val: val > 20, arr2)))

是的,Python有。

numbers = [1, 2, 3, 4, 5]
all_are_one = all(elem == 1 for elem in numbers)
some_are_one = any(elem == 1 for elem in numbers)

最新更新