【问题标题】:Accessing Class Variables from a List in a nice way in Python在 Python 中以一种很好的方式访问列表中的类变量
【发布时间】:2011-01-27 08:56:48
【问题描述】:

假设我有一个列表 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”重复 有什么建议?我想不出一种方法来使用“地图”来做到这一点。

【问题讨论】:

    标签: python class list map methods


    【解决方案1】:

    应该可以的:

    Y = [x.v for x in X]
    

    【讨论】:

      【解决方案2】:

      我会做一个列表理解:

      Y = [ i.v for i in X ]
      

      它更短更方便。

      【讨论】:

        【解决方案3】:

        列表理解是要走的路。

        但你也说你不知道如何使用地图来做到这一点。现在,我完全不建议为此使用map,但可以这样做:

        map( lambda x: x.v, X)
        

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

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

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

        应该也可以。

        【讨论】:

        • @Deniz 我认为将答案授予 FlorianH 是公平的,因为他在这种情况下确实拥有最佳解决方案,并且是第一个给出答案的人。我的回答更多是为了展示替代方式,并展示在这种情况下如何使用地图。
        • 阅读问题后我想到的两件事是,绝对是map ..啊等等itemgetter 怎么样。为你 +1。
        猜你喜欢
        • 2010-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-21
        • 2018-11-15
        • 2019-07-31
        • 1970-01-01
        相关资源
        最近更新 更多