'RuntimeError: maksymalna głębokość rekursji przekroczona w cmp' podczas pracy z listami

Wystąpił błądRuntimeError: maximum recursion depth exceeded in cmp podczas pracy z listami. Dokładniej,p0 in points, thepoints.index(p0) wywołanie metody, jak równieżpoints.remove(p0) wywołanie metody napoints lista podnosi błąd dla konkretnego słownikap0 w określonym indeksie mojegopoints lista. Thepointslista zawiera 4700 słowników w momencie wystąpienia błędu, zmniejszono jeden słownik o jeden z listy 12000 obiektów, dopóki błąd nie zostanie zgłoszony. Thep0 Słownik zawiera odniesienie do innego słownika na liście, który w zwrotach zawiera odniesienie dop0 obiekt. Thep0 słownik oraz słownik zawiera odniesienie do dwukrotnego pojawienia się w słownikupoints lista, zanim błąd zostanie zgłoszony przez dowolne z trzech wywołań metody.

Skąd pochodzi ten błąd?

EDYTOWAĆ: Oto kod powodujący błąd.

for roadType in roadTypes:
    points = roadPoints[roadType][:]

    while len(roadTails[roadType]) > 0:
        p0 = roadTails[roadType].pop()

        p1 = p0['next']
        points.remove(p0) # Where the error occurs
        points.remove(p1)

        while True:
            p2 = find(p1, points, 0.01)

            if p2:
                points.remove(p2)

                p3 = p2['next']
                points.remove(p3)

                if p3 in roadTails[roadType]:
                    roadTails[roadType].remove(p3)
                    break
                else:
                    p0, p1 = p2, p3
                    continue

            else: break

Oto definicjafind, gdziedist oblicza odległość między dwoma punktami.

def find(p1, points, tolerance = 0.01):
    for p2 in points:
        if dist(p2['coords'], p1['coords']) <= tolerance:
            return p2
    return False

Oto pełny ślad błędu:

Traceback (most recent call last):
  File "app.py", line 314, in <module>
    points.remove(p0) # Where the error occurs
RuntimeError: maximum recursion depth exceeded in cmp

questionAnswers(1)

yourAnswerToTheQuestion