gpt4 book ai didi

python - 如果只有一个结果,则替代列表理解

转载 作者:IT老高 更新时间:2023-10-28 21:44:39 26 4
gpt4 key购买 nike

我开始习惯于在 Python 中列出推导式,但恐怕我使用它有些不当。我曾经遇到过几次使用列表理解但立即从生成的列表中获取第一个(也是唯一一个)项目的场景。这是一个例子:

actor = [actor for actor in self.actors if actor.name==actorName][0]

(self.actors 包含一个对象列表,我正试图找到一个具有特定(字符串)名称的对象,该名称位于 actorName 中。)

我正在尝试从列表中提取与我正在寻找的参数匹配的对象。这种方法不合理吗?悬空的 [0] 让我觉得有点不安全。

最佳答案

您可以使用生成器表达式和 next 代替。这也会更有效,因为没有创建中间列表,并且一旦找到匹配项就可以停止迭代:

actor = next(actor for actor in self.actors if actor.name==actorName)

作为 senderle指出,这种方法的另一个优点是,如果找不到匹配项,您可以指定默认值:

actor = next((actor for actor in self.actors if actor.name==actorName), None)

关于python - 如果只有一个结果,则替代列表理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7006839/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com