首页 > 解决方案 > 如何在没有 for 循环的情况下访问列表中类的属性

问题描述

如何在没有 for 循环的情况下访问列表中类的属性?我一直在创建列表并循环遍历它们是低效的,所以我试图避免这样的干净代码。

kill_the_loop.py

# Define our arbitrary class
class IntRelationships(object):
    def __init__(self, a, b):
        self.a = a
        self.b = b
        self.diff = abs(b-a)
    def add(self):
        return self.a + self.b

# create a class list
relationship_list = [ IntRelationships(1,2), IntRelationships(2,4), IntRelationships(4, 8)]

# How I currently access attributes in list
large_diff_list = []
for relationship in relationship_list:
    if relationship.diff > 1:
        large_diff_list.append(relationship)

# How imagine one could do it without a loop and array initialisation
large_diff_list2 = relationship_list[ relationship_list[:].diff > 1 ]

标签: python

解决方案


您可以使用列表理解

large_diff_list = [r for r in relationship_list if r.diff > 1]

推荐阅读