在python中以一种很好的方式从列表中访问类变量

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]


单子理解是一种方法。

但你也说你不知道怎么用地图来做。现在,我不建议对此使用map,但可以这样做:

1
map( lambda x: x.v, X)

也就是说,创建一个匿名函数(lambda)来返回该属性。

如果您更喜欢使用python库方法(了解您的工具…),那么如下所示:

1
map(operator.attrgetter("v"),X)

也应该有效。


我会做一个列表理解:

1
Y = [ i.v for i in X ]

它更短,更为规整。