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

时间:2010-03-14 11:35:23

标签: python class list map methods

假设我有一个列表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]

有一个很好的命令吗? 我能想到的最好方法是:

Y = []
for i in X
    Y.append(i.v)

但它似乎并不优雅〜因为任何给定的“v”都需要重复 有什么建议?我无法找到一种方法来使用“map”来做到这一点。

3 个答案:

答案 0 :(得分:11)

这应该有效:

Y = [x.v for x in X]

答案 1 :(得分:5)

列表理解是要走的路。

但是你也说过你不知道如何使用map来做到这一点。现在,我根本不会推荐使用map,但可以这样做:

map( lambda x: x.v, X)

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

如果你更喜欢使用python库方法(知道你的工具......),那么就像:

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

也应该有用。

答案 2 :(得分:2)

我会做一个列表理解:

Y = [ i.v for i in X ]

它更短,更方便。