Python 使函数列表理解

Python 使函数列表理解,python,function,list-comprehension,Python,Function,List Comprehension,我的代码中有几行看起来非常类似于 [this.Attribute for this in THAT if something] 有没有办法让函数以更短的方式返回它?因为创建它们非常繁琐,而且我觉得它们不那么可读,特别是如果有太多的“如果条件” 编辑: 嗯,我经常花时间试图从一个符合某些标准的大名单中得到一些东西。我经常需要更改标准和输出。 像这样: [obj for obj in Object.ALLOBJECTS if obj.pos == (x,y)] [creature.pos for

我的代码中有几行看起来非常类似于

[this.Attribute for this in THAT if something]
有没有办法让函数以更短的方式返回它?因为创建它们非常繁琐,而且我觉得它们不那么可读,特别是如果有太多的“如果条件”

编辑:

嗯,我经常花时间试图从一个符合某些标准的大名单中得到一些东西。我经常需要更改标准和输出。 像这样:

[obj for obj in Object.ALLOBJECTS if obj.pos == (x,y)]

[creature.pos for creature in Creature.ALLCREATURES if creature is not caller]

[creature for creature in Creature.ALLCREATURES if creature.pos == pos and creature is not caller]
等等


也许我从一开始就做错了。

你可以把条件外包给一个函数。如果很复杂的话 将复杂程度分开,使每个部分更易于阅读,这
多少是函数的第一点。

你能粘贴更多的代码来让你的问题更清楚吗?有很多潜在的解决方案(包括
itertools.ifilter
itertools.imap
operator.attratter
,内置函数
all
any
)的组合,但如果没有更具体的问题,就很难提出好的解决方案。你发布的内容其实很清楚。依我看,在函数中包装如此简单的东西只会增加调用函数的开销,而不会增加太多的清晰度。