我有一些东西,当作为列表理解运行时,运行良好。
看起来像,
[myClass().Function(things) for things in biggerThing]
Function
是一个方法,它构建一个列表。该方法本身不返回任何内容,但会在其中对列表进行操作。
现在,当我将其更改为 generator 时,
(myClass().Function(things) for things in biggerThing)
它不会像我期望的那样操纵数据。事实上,它似乎根本没有操纵它。
列表理解和生成器之间的功能区别是什么?
生成器在消耗时进行动态评估。因此,如果您从不迭代生成器,则永远不会评估其元素。
所以,如果你这样做:
for _ in (myClass().Function(things) for things in biggerThing):
pass
Function
会跑。
现在,你的意图确实不清楚。
相反,请考虑使用map
:
map(myClass().Function, biggerThing)
请注意,这将始终使用相同的 MyClass 实例
如果这是一个问题,那么请执行以下操作:
for things in BiggerThing:
myClass().Function(things)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)