从列表中的对象收集值

时间:2013-11-28 17:07:52

标签: python lambda

我有一个由自定义类对象组成的列表,例如:

class myClass:
    pass

myList=[]

for i in range(100):
    myObj=myClass()
    myObj.prop1=i
    myObj.prop2=i*i
    myList.append(myObj)

现在我想收集这些对象的某些属性的所有值来分隔列表;现在我这样做:

myValuesList = []
for obj in myList: myValuesList.append(obj.prop1)

有更好/更快的方式吗?与maplambda有什么关系?

1 个答案:

答案 0 :(得分:1)

List comprehensions tend to be faster

myValueList = [obj.prop1 for obj in myList]
带有operator.attrgetter

map可能会更快:

myValueList = map(operator.attrgetter('prop1'), myList)  # use list(map(...)) in python3.x