In Python, wie zum vergleichen von zwei Listen und erhalten Sie alle Indizes der Spiele?
Dies ist wahrscheinlich eine einfache Frage, die mir gerade fehlt, aber ich habe zwei Listen mit strings und ich möchte zu "springen" einem element-durch-element, gegen den der andere wieder den index des matches. Ich erwartet, dass es mehrere Spiele und alle Indizes. Ich weiß, die Liste.index() liefert den ersten, und Sie können leicht die Letzte sein. Zum Beispiel:
list1 = ['AS144','401M','31TP01']
list2 = ['HDE342','114','M9553','AS144','AS144','401M']
Dann würde ich Durchlaufen Liste1 im Vergleich zu liste2-und Ausgang:
[0,0,0,1,1,0] , [3,4]
oder etc für die erste iteration
[0,0,0,0,0,1] , [6]
für die zweite
und [0,0,0,0,0,0]
oder []
für Dritte
BEARBEITEN:
Sorry für etwaige Verwirrung. Ich möchte die Ergebnisse in einer Weise, dass kann ich dann mit Ihnen, wie diese - ich habe eine Dritte Liste nennen list3 und ich möchte die Werte aus dieser Liste in den Indizes, die ausgegeben wird. ie list3[previousindexoutput]=list of cooresponding values
Du musst angemeldet sein, um einen Kommentar abzugeben.
Persönlich würde ich anfangen mit:
matches = [item for item in list1 if item in list2]
indices = [list1.index(i) for i in list2]
oder Umgekehrt.set
ersten, weil es sonst, du bist immer O(n*n) Leistung.Das beantwortet die Frage nicht. Siehe mein Kommentar unten.
Als start:
[False, False, False]
für mich.True
oderFalse
wenn die Elemente am selben index der beiden Listen sind die gleichen. E. g. fürlist1 = [1, 2, 3]
undlist2 = [1, 2, 4]
es gibt[True, True, False]
. Stimmen meine Antwort unten, wenn Sie mögen 🙂Ich bin mir nicht sicher, wie Sie Sie wollen, dass diese verpackt, aber das macht die Arbeit:
Ergebnisse in
Diese sollte das tun, was Sie wollen, und es kann leicht sein, verwandelte sich in einen generator:
Hier ist eine version mit einem etwas anderen Ausgang format:
Dies gibt eine Liste von Listen mit True/False Werten statt 1/0:
Edit: Wenn du 2.5 oder höher geben sollte 1 & 0: