2

我在数组中有一堆数据点(x,y,z):

[58.9067649841309, 57.8828468322754, -50.0]
[63.3353118896484, 62.7399787902832, -50.0]
[73.3353118896484, 62.8352203369141, -50.0]
...
[75.9067916870117, 39.9781227111816, -15.0]
[77.5257720947266, 58.3114356994629, -15.0]
[58.9067649841309, 57.8828468322754, -15.0]

并且需要找到与 y 匹配的点并将它们放在单独的列表中。我已经用各种方法进行了几个小时的搜索,但没有运气。

更新:对不起,我不清楚,我可以使用排序功能对它们进行分组,但不知道如何将它们放在单独的列表中。

4

2 回答 2

2

看来你想要itertools.groupby(L, key=lambda r: r[2])

于 2012-10-27T03:26:23.223 回答
2

首先,您需要按 Y 轴对它们进行排序:

sl = sorted(data, key=lambda l:l[1])

那么你可以使用itertools.groupby

from itertools import groupby

groupby(sl, key=lambda l:l[1])

打印:

for i, g in groupby(sl, key=lambda l:l[1]):
    print str(i) + ":"
    for x, y, z in g:
        print x, y, z

39.9781227112:
75.906791687 39.9781227112 -15.0
57.8828468323:
58.9067649841 57.8828468323 -50.0
58.9067649841 57.8828468323 -15.0
58.3114356995:
77.5257720947 58.3114356995 -15.0
62.7399787903:
63.3353118896 62.7399787903 -50.0
62.8352203369:
73.3353118896 62.8352203369 -50.0
于 2012-10-27T04:05:16.123 回答