Python标准库中有一个非常方便的函数,叫做any
,它可以检查给定可迭代项中是否有任何项可以验证某些条件。
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中是否有等效的语法糖,或者我是否必须使用“更长”的表达方式。
答案 0 :(得分:5)
是的。 Iterator::any
是Iterator上的一种方法(与Python相比,Python是一个接受Iterator的独立函数)。
您可以像调用其他任何方法一样调用它。
fn main() {
let my_list = vec![1, 3, 4, 5, 8];
println!("{}", my_list.iter().any(|&i| i == 4));
}
如果仍然使用Vec
或slice
,则可以使用contains
,它将在its implementation中使用any
方法。
fn main() {
let my_list = vec![1, 3, 4, 5, 8];
println!("{}", my_list.contains(&4));
}
API doc还将列出其他有用的方法,例如all
,chain
,zip
,map
或filter
。文档中还有一些方法的示例,都值得一读。