Ich versuche, eine Liste zu durchlaufen, aber gleichzeitig Bezug auf die Elemente vor, so dass ich vergleichen kann.Python-Referenz vorhergehende Elemente in der Liste loop
Dies ist mein Code:
list1=[(1,'a','hii'),(2,'a','byee'),(3,'a','yoo'),(4,'b','laa'),(5,'a','mehh')]
ich durch meine list1 Tupeln Schleife wollen, so dass, wenn der zweite Wert in dem Tupel ist der gleiche Wert wie der zweite Wert in dem Tupel vor (beide = = 'a'), dann concat den dritten Gegenstand im Tupel.
Ausgang Ich möchte:
list2=[('a','hii,byee,yoo'),('b','laa'),('a','mehh')]
Was ich habe versucht,:
for item in list1:
for item2 in list2:
if item[0]==(item2[0]-1) and item[1]==item2[1]:
print item[2]+','+item2[2]
elif item[0] != item2[0]-1:
continue
elif item[0]==(item2[0]-1) and item[1] != item2[1]:
print item[2]
falschen Ausgang
hii,byee
byee,yoo
yoo
laa
Von den ersten 2 Ausgaben scheint es so, als ob die Schleife nur den vorhergehenden Wert, aber nicht etwa 2 oder mehr vorhergehenden Wert betrachtet. Daher hat es nur 2 Wörter zusammengefügt und nicht 3, die es haben sollte. Die Ausgabe endet auch mit Wiederholungen.
Wie kann ich das umgehen?
Do willst du nur benachbarte Tupel zusammenführen? Das heißt, die ersten drei werden alle zusammengeführt, aber die letzte, mit "mehh", geht nicht mit den Listen von vorne zusammen. – Blckknght
Es muss benachbart sein und der zweite Wert des Tupels muss gleich sein (beide == 'a' oder ein anderer Wert) und das erste Element des Tupels muss um eins größer sein als das vorherige. So könnte es sein sei zuerst 3 oder zuerst 'n', wenn es die Anforderungen erfüllt. Außerdem ist meine Liste bereits nach dem ersten Wert des Tupels sortiert. – jxn