具有类属性的列表理解

我想使用类属性来制作所有属性的单个列表:


from dataclasses import dataclass


@dataclass

class Foo:

    a: int

    b: int


data = [

    Foo(1,2),

    Foo(3,4)

]

print([[foo.a, foo.b] for foo in data])

但结果是一列属性列表。我怎样才能有一个包含所有属性的列表[1,2,3,4]而不是[[1,2],[3,4]]?


汪汪一只猫
浏览 129回答 4
4回答

眼眸繁星

我建议你使用itertools.chain.from_iterable来展平中间列表In [6]: import itertoolsIn [7]: print(list(itertools.chain.from_iterable([[foo.a, foo.b] for foo in data])))                                                                                                                               [1, 2, 3, 4]

慕田峪7331174

from functools import reduce from dataclasses import dataclass@dataclassclass Foo:  a: int  b: intdata = [  Foo(1,2),  Foo(3,4)]result = [[foo.a, foo.b] for foo in data]print(reduce(list.__add__, result))

翻过高山走不出你

你可以这样做:print([value for foo in data for attr, value in foo.__dict__.items()])它基本上是在做两个 for 循环,与做的一样:for foo in data:    for attr, value in foo.__dict__.items():        print(value)

开满天机

只需使用嵌套列表理解[x for x in [foo.a, foo.b] for foo in data]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python