我有一个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很陌生。
答案 0 :(得分:1)
你的方法可能是最具Pythonic和最有效的方法。
你可以这样做:
data = [(o.value, o.datatype) for o in objects]
values, datatypes = zip(*data)
虽然这可以节省行数,但效率较低,因为它涉及列表的两次迭代而不是一次。