Löschen von bestimmten Werten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Herzdame2608
User
Beiträge: 62
Registriert: Donnerstag 18. Juni 2020, 12:04

Hallo meine Lieben :-)
Folgende Problematik:
Ich habe zwei Listen, und in diesen Listen sind Koordinaten gespeichert. Mein Ziel ist es, die minimale Distanz zwischen den Koordinaten (paarweise) zu berechnen und für Distanzen, die beispielsweise <0,005 sind die Koordinaten aus einer der Liste zu löschen. So dass ich am Ende eine Liste habe mit Koordinaten, wo alle Punkte mindestens 0.005 Abstand zu den Koordinaten in der anderen Liste haben. Wie könnte ich das anstellen?
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

Paarweises Vergleichen sind zwei for-schleifen, und fuer jede Koordinate aus der auesseren Schleife musst du einfach nur pruefen, ob sie weitgenug von allen anderen in der zweiten weg ist:

Code: Alles auswählen

filtered_points = []
for point in first_list:
    if all(distance(point, second_point) > THRESHOLD for second_point in second_list):
        filtered_points.append(point)
Benutzeravatar
DeaD_EyE
User
Beiträge: 1020
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Ich habe zwei Listen, und in diesen Listen sind Koordinaten gespeichert.
So in der Art?:

Code: Alles auswählen

coord1 = [(x1, y1), (x2, y2), ...]
coord1 = [(xx1, yy1), (xx2, yy2), ...]
Mit zip über die beiden Listen iterieren, wodurch man dann pro Iteration ein Element von Liste1 und eins von Liste2 bekommt.
Dann erzeugst du einfach neue Listen und die Distanz kannst du mit math.dist berechnen.
Wenn die Distanz die Bedingungen erfüllt, die Koordinaten zur den neuen Listen hinzufügen und ggf. auch die Distanz in eine andere Liste packen.

Code: Alles auswählen

import math

# nützliches
# math.hypot und math.dist

coord1 = [(3, 5), (10, 15), (1, 2)]
coord2 = [(10, 15), (10, 15), (10, 2)]

distances = []
coord1_new = []
coord2_new = []

for p1, p2 in zip(coord1, coord2):
    distance = math.dist(p1, p2)
    if distance > 0.005:
        coord1_new.append(p1)
        coord2_new.append(p2)
        distances.append(distance)
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

@DeadEye: paarweise ist nicht gezippt. Das heißt schon jedes Element der einen mit jedem Element der anderen Liste.
Antworten