Accessing Class Variables from a List in a nice way in Python
假设我有一个列表x=[a,b,c],其中a,b,c是同一类c的实例。现在,所有这些实例a,b,c都有一个名为v,a.v,b.v,c.v的变量…我只想要一张单子Y=[A.V,B.V,C.V]
有没有一个很好的命令?我能想到的最好方法是:
1 2 3 | Y = [] for i in X Y.append(i.v) |
但它看起来不太优雅,因为任何给定的"v"都需要重复这个过程。有什么建议吗?我想不出一种方法来用"地图"来做这个。
这应该有效:
1 | Y = [x.v for x in X] |
单子理解是一种方法。
但你也说你不知道怎么用地图来做。现在,我不建议对此使用
1 | map( lambda x: x.v, X) |
也就是说,创建一个匿名函数(lambda)来返回该属性。
如果您更喜欢使用python库方法(了解您的工具…),那么如下所示:
1 | map(operator.attrgetter("v"),X) |
也应该有效。
我会做一个列表理解:
1 | Y = [ i.v for i in X ] |
它更短,更为规整。