Gemeinsame Punkte meherer Listen bestimmen

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
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Jeremy hat geschrieben:Ja sicher, aber ich kann die Funktion intersect wie im numerix's Beispiel nicht nutzen, da es auch mehr als einen kontaktbereich zwischen 2 Teilem geben kann. Ich tüftele an einem passenden Vorgehen. Mit "in" klappt das schon ganz gut.
So zum Beispiel:

Code: Alles auswählen

from random import randrange

# Erzeugung von 20 Listen mit je max. 2000 verschiedenen Punkten
punktlisten = [list(set([(randrange(30),randrange(30)) for k in xrange(2000)])) for i in xrange(20)]

# Erzeugung einer Liste mit gemeinsamen Schnittpunkten in richtiger Reihenfolge
s = set(punktlisten[0])
for liste in punktlisten[1:]:
    s.intersection_update(liste)
schnittpunkte = [punkt for punkt in min(punktlisten) if punkt in s]
Sollte sich das von dir gewünschte "Beibehalten der Reihenfolge" nicht nur auf die Ausgangslisten beziehen, sondern auf das Ergebnis, dann macht das natürlich nur Sinn, wenn in allen deinen Listen die Reihenfolge der gemeinsamen Punkte gleich ist. Falls letzteres nicht zutrifft, müsstest du eine der Listen angeben, die die Reihenfolge vorgibt.
Jeremy
User
Beiträge: 48
Registriert: Samstag 29. November 2008, 19:05

Wenn sich zwei Teile berühren, haben die Punkte in beiden Listen die gleiche Reihenfolge.
Ich habe das Problem mit "in" gelöst und speichere meine Schnittpunkte als Listen in einem dict. Mit der Adressierung über die keys geht das sehr gut. Später kann ich die Listen dann mit dem key aufrufen und zeichnen lassen.

PS: Die Feinheiten von Python kenne ich noch nicht, ich arbeite erst seit ca. 4 Wochen mit Python.

Danke für eure Ratschläge!
Antworten