首页 > 解决方案 > 将对象列表解包到单独的属性中

问题描述

我有一个像这样的简单 Python 类:

class P(object):
    def __init__(self, x, y):
        self.x = x
        self.y = y

我创建了这些对象的列表,例如:

import random

list_of_objects = [P(random.random(), random.random()) for i in range(1000)]

然后如何将 P 的属性解包到不同的列表中?

也就是说,我的目标是获得list_of_x, list_of_y,其中这些定义为:

list_of_x = [p.x for p in list_of_objects]
list_of_y = [p.y for p in list_of_objects]

我想知道是否有更简洁的方法,例如使用 zip/tuples,而不是上面的代码,它涉及 2 个 for 循环。

标签: pythoniterable-unpacking

解决方案


只需使用 1 for 循环并将 x/y 附加到空列表:

list_of_x = []
list_of_y = []
for p in list_of_objects:
    list_of_x.append(p.x)
    list_of_y.append(p.y)

推荐阅读