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

时间:2014-08-03 17:41:00

标签: 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]

我知道我可以使用

创建一个列表
values = [o.value for o in objects]

是否有一种pythonic方式来制作两个列表? 我绝对可以使用for循环,

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

我只是想知道是否有更优雅的方式。我对Python很陌生。

1 个答案:

答案 0 :(得分:1)

你的方法可能是最具Pythonic和最有效的方法。

可以这样做:

data = [(o.value, o.datatype) for o in objects]
values, datatypes = zip(*data)

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