【问题标题】:Is there an equivalent to the `any` method in python是否有等效于python中的`any`方法
【发布时间】:2019-09-12 10:06:51
【问题描述】:

在 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 中的“更长”表达式更短...play.rust-lang.org/…您的实际问题是什么?
  • “更长”是什么意思?请指定它(例如,通过文档链接或代码)
  • 如果你正在使用Vec/slice,你可以使用contains which uses any under the hood
  • @French 回答了我的问题 .... 我还是个 rust 新手,所以我没有直接考虑使用 clojure,也不知道 any。非常感谢,正是我想要的:)
  • @m.raynal 第三个结果:doc.rust-lang.org/std/?search=any

标签: rust any syntactic-sugar


【解决方案1】:

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

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

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

如果您仍然使用Vecslice,则可以使用contains,这将使用its implementation 中的any 方法。

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

API doc 还会列出其他有用的方法,例如allchainzipmapfilter。文档中还有这些方法的示例,都值得一读。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    相关资源
    最近更新 更多