在Python中创建两个对象属性列表

在Python中创建两个对象属性列表,python,list,object,attributes,Python,List,Object,Attributes,我有一个python中的对象列表 objects = [Obj1, Obj2, Obj3] 这些对象具有属性 Obj1.value Obj1.datatype Obj2.value Obj2.datatype 我试图创建两个列表,每个列表包含我的对象列表的一个特定属性 values = [Obj1.value, Obj2.value, Obj3.value] datatypes = [Obj1.datatype, Obj2.datatype, Obj3.datatype] 我知道我可以用

我有一个python中的对象列表

objects = [Obj1, Obj2, Obj3]
这些对象具有属性

Obj1.value
Obj1.datatype
Obj2.value
Obj2.datatype
我试图创建两个列表,每个列表包含我的对象列表的一个特定属性

values = [Obj1.value, Obj2.value, Obj3.value]
datatypes = [Obj1.datatype, Obj2.datatype, Obj3.datatype]
我知道我可以用

values = [o.value for o in objects]
有没有一种类似蟒蛇的方法可以同时列出这两个列表? 我完全可以用for循环来实现

values = []
datatypes = []
for o in objects:
    values.append(o.value)
    datatypes.append(o.datatype)

我只是想知道有没有更优雅的方式。我对Python非常陌生。

您的方法可能已经是最具Python风格和效率的方法了

您可以这样做:


但是,虽然这样可以节省行数,但效率较低,因为它涉及列表的两次迭代而不是一次。

为什么要这样做?为什么需要单独的属性列表?只要在需要的时候访问你需要的东西。是的,我试图避免两次迭代。感谢您的输入,我将继续使用for循环。
data = [(o.value, o.datatype) for o in objects]
values, datatypes = zip(*data)