【发布时间】:2011-08-10 06:43:15
【问题描述】:
我开始习惯于在 Python 中列出推导式,但恐怕我使用它有些不当。我曾经遇到过几次使用列表理解但立即从生成的列表中获取第一个(也是唯一一个)项目的场景。这是一个例子:
actor = [actor for actor in self.actors if actor.name==actorName][0]
(self.actors 包含一个对象列表,我正在尝试找到一个具有特定(字符串)名称的对象,该名称位于 actorName 中。)
我正在尝试从列表中提取与我正在寻找的参数匹配的对象。这种方法不合理吗?悬空的 [0] 让我觉得有点不安全。
【问题讨论】:
-
不要害怕,这不是那可怕:)找到匹配项时停止循环的以下答案之一可能是更好的选择。
next(<generator_exp>)还不错,但如果你尝试让它在 80 个字符行中工作,它会变得很丑。如果您要按名称查找一堆演员,最好创建一个dict,这样您就可以直接查找他们。 -
幸运的是,这不是我经常或在大型场景中做的事情。我很擅长字典,并且会牢记这一技巧。