在实体列表上进行高效(或更多pythonic)迭代

时间:2016-01-24 01:01:47

标签: python list iteration

我在一个名为pool的列表中有一个实体列表(一个只包含ID的类,以及稍后混合添加的组件的属性。),它包含工厂创建的每个实体。

这个工厂还有一个方法可以为每个实体提供某些组件:

def list(self, Search_ID = []):
    """
    Return a filtered list of the entities with certain components. If components
    are not given to the method, simply return all entities.
    """
    for entity in self.pool:
        if entity.has(Search_ID) is True:
            yield entity

当搜索多个组件时,此代码变得非常快。这与x.list(["position", "name"])类似,用于生成具有位置和名称的池列表中的每个组件。

has方法如下:

def has(self, c_list = []):
    """
    Returns true if this entity has all the listed components within
    c_list.
    """
    for component in c_list:
        if not hasattr(self, component):
            return False

    return True

我想知道是否有更多的pythonic和有效的方式来覆盖所有这些信息,而不是仅仅迭代列表。

0 个答案:

没有答案