在Python中创建两个对象属性列表
我有一个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] 我知道我可以用
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)