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
)的组合,但如果没有更具体的问题,就很难提出好的解决方案。你发布的内容其实很清楚。依我看,在函数中包装如此简单的东西只会增加调用函数的开销,而不会增加太多的清晰度。