gpt4 book ai didi

python - 在 python 中处理大量对象的最佳方法

转载 作者:太空宇宙 更新时间:2023-11-04 09:05:09 26 4
gpt4 key购买 nike

处理同一类的大量实例的最佳方法是什么。目前,我将它们添加到列表中,然后在需要调用方法时循环遍历列表。

[o.method() for o in myObjects]

有没有一种方法可以将它们作为一个集合来处理,因为上面可以用类似的东西代替

myObjects.method()

虽然我有一个元类而不是包含列表并执行此操作的列表,但我想知道这是否有点令人费解。有没有更好的方法来做到这一点?

编辑:我通常不需要返回值

最佳答案

如果您想在列表中获得所有这些方法调用的返回值,那么使用 map() 或列表理解是处理同类对象序列的正确方法:

from operator import methodcaller
results = map(methodcaller('method'), myObjects)

在 Python 3 中,map() 返回一个生成器来生成一个列表,使用列表理解是最有效的:

results = [o.method() for o in myObjects()]

但是,如果您只对方法调用本身感兴趣并且您正在丢弃返回值(例如,因为它是 None),那么您现在正在创建一个列表对象。您正在使用列表推导来产生副作用,并在此过程中不必要地生成大量 None 引用。

在这种情况下,您只需使用一个简单的 for 循环:

for o in myObjects:
o.method()

由于 Python 的动态特性,无论如何,Python 无法知道一系列对象是否都具有相同的方法。因为 Python 之禅指出显式优于隐式,并且可读性很重要,所以没有“集合调用”语法;您应该明确说明这一点。

关于python - 在 python 中处理大量对象的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21451901/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com