Python:删除列表中几乎相同的浮点列表

2024-09-30 10:40:32 发布

您现在位置:Python中文网/ 问答频道 /正文

给你一张单子

[
 (8.0, 4.0),
 (0.0, 10.0),
 (0.0, 0.0),
 (20.0, 10.0),
 (20.0, 0.0),
 (9.0, 5.0),
 (8.0, 5.0),
 (8.675531914893616, 5.0),
 (8.0, 4.063398304653239),
 (8.0, 4.063398304653226),
 (8.22625643984698, 0.0),
 (11.219425256286437, 0.0),
 (8.996702181269876, 5.0),
 (8.996702181269876, 5.0),
 (8.002777758573341, 5.0),
 (8.002777758573341, 5.0),
 (8.002777758573341, 5.0),
 (8.0, 4.9647118275280855),
 (8.0, 4.964711827528083),
 (8.0, 4.9647118275280775),
 (8.67858347757108, 5.0),
 (8.672482331843884, 5.0)
]

我想删除其x-x',y-y'都小于0.1的点。(x',y'代表其他点)

我读了一些C++代码,它使用了一个独特的函数来对事情进行排序,但是我不知道如何将它翻译成Python。

样本C++代码:

    // Remove duplicate (or simply similar) points from polygon
    auto it = unique(
        vecVisibilityPolygonPoints.begin(),
        vecVisibilityPolygonPoints.end(),
        [&](const tuple<float, float, float> &t1, const tuple<float, float, float> &t2)
        {
            return fabs(get<1>(t1) - get<1>(t2)) < 0.1f && fabs(get<2>(t1) - get<2>(t2)) < 0.1f;
        });

我该怎么做


Tags: 函数代码get排序代表float事情单子

热门问题