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

Den*_*niz 1 python methods class list map

假设我有一个列表X = [a,b,c],其中a,b,c是同一个类C的实例.现在,所有这些实例a,b,c都有一个名为v,av,bv,cv的变量...我只想要一个清单Y = [av,bv,cv]

有一个很好的命令来做到这一点?我能想到的最好的方法是:

Y = []
for i in X
    Y.append(i.v)
Run Code Online (Sandbox Code Playgroud)

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

Flo*_*anH 11

这应该工作:

Y = [x.v for x in X]
Run Code Online (Sandbox Code Playgroud)


ext*_*eon 5

列表理解是要走的路.

但是你也说过你不知道如何使用map来做到这一点.现在,我根本不建议使用map它,但它可以完成:

map( lambda x: x.v, X)
Run Code Online (Sandbox Code Playgroud)

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

如果您更喜欢使用python库方法(了解您的工具......),那么类似于:

map(operator.attrgetter("v"),X)
Run Code Online (Sandbox Code Playgroud)

也应该工作.