Python 从列表中的对象收集值
我有一个由自定义类的对象组成的列表,例如:Python 从列表中的对象收集值,python,lambda,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.a
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)
有更好/更快的方法吗?与map
和lambda
有关的内容?:
operator.attrgetter
和map
可能更快:
myValueList = map(operator.attrgetter('prop1'), myList) # use list(map(...)) in python3.x
同样,如果OP可以在
myClass
中定义\uuuuu init\uuuuu
方法,那么第一个循环也可以替换为LC。谢谢!然而,第二个变量对我来说还不清楚:当我运行myValueList=list(map(operator.attrgetter('prop1'),myList))
(我在Python 3上),我得到一个错误NameError:name“operator”未定义
@VasilyA:import operator
myValueList = map(operator.attrgetter('prop1'), myList) # use list(map(...)) in python3.x