在python中是否有等同于`any`的方法

问题描述 投票:1回答:1

在Python的标准库中有一个非常方便的函数any,它允许检查给定的iterable中的任何项是否验证某些条件。

my_list = [1, 3, 4, 5, 8]

# using any
four_is_present = any(elem == 4 for elem in my_list)

# is equivalent to
four_is_present = False
for elem in my_list:
    if elem == 4:
        four_is_present = True
        break

我想知道在Rust中是否存在等效的语法糖,或者我是否必须使用“更长”的表达式。

rust any syntactic-sugar
1个回答
5
投票

是。有一个Iterator::any是迭代器上的一种方法(与Python相比,它是一个独立的函数,接受迭代器)。

你可以像任何其他方法一样调用它。

fn main() {
    let my_list = vec![1, 3, 4, 5, 8];
    println!("{}", my_list.iter().any(|&i| i == 4));
}

无论如何你使用的是Vecslice,你可以使用contains,它将在any中使用its implementation方法。

fn main() {
    let my_list = vec![1, 3, 4, 5, 8];
    println!("{}", my_list.contains(&4));
}

API doc还将列出其他有用的方法,例如allchainzipmapfilter。此外,文档中的那些方法也有一些例子值得一读。

© www.soinside.com 2019 - 2024. All rights reserved.