程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

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

发布于2019-08-24 14:42     阅读(43)     评论(0)     点赞(4)     收藏(1)


我开始习惯于在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)

正如发送者指出的那样,这种方法的另一个优点是,如果找不到匹配项,您可以指定默认值:

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


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/57058/05263ea4aa8391a8f0f2/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

4 0
收藏该文
已收藏

评论内容:(最多支持255个字符)