如何使用Python创建基于另一个列表值的子集列表

时间:2019-01-25 02:08:40

标签: python-3.x

我有三个相同的散点图长度列表:x(浮点数),y(浮点数)和c(颜色整数),并且想将x和y列表分成按颜色值过滤的子集,以便我可以使用图例在情节中对其进行描绘

虽然我可以通过遍历x和y列表的len(c)循环来实现此目标,但它不是非常pythonic,我希望有人可以提供一些更优雅的方式

我在想类似下面的内容,但是显然不起作用

    c_list = list(set(c))
    xset = []
    yset = []
    for j in c_list:
        xset.append([i for i in x if j in c])
        yset.append([i for i in y if j in c])

要谦虚-我只学习Python一周左右!

预先感谢

1 个答案:

答案 0 :(得分:1)

我希望这会有所帮助:

x = [1, 2, 3, 4, 5]
y = [5, 3, 1, 3, 2]
c = [1, 3, 2, 3, 1]

c_list = list(set(c))
xset = []
yset = []
for j in c_list:
    xset.append([x[i] for i, v in enumerate(c) if v == j])
    yset.append([y[i] for i, v in enumerate(c) if v == j])

print(xset)
print(yset)