假设我有一个列表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”来做到这一点。
答案 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 ]
它更短,更方便。