2016-10-25 5 views
1

Ich habe eine Funktion erasing_pairs(), die eine Zeichenfolge nehmen und eine Liste r zurückgeben sollte, wo alle Paare entfernt werden.Gleiche Paare in derselben Liste löschen?

Hier ist, wie die Funktion erwartet wird, aussehen:

def erasing_pairs(r): 
    without_pairs=[] 

    return without_pairs 

Also im Grunde habe ich erklärt, um das gewünschte Ergebnis. Hier ist ein Versuch, den ich gemacht, aber ohne Erfolg:

def erasing_pairs(r): 
    without_pairs=[] 
    without_pairs = [x for x in r if r.count((r[x][0])) == 1] 
    return without_pairs 
+0

Gemäß den Buchungsrichtlinien, geben Sie bitte Code ein, der das von Ihnen beschriebene Problem reproduziert. Der angegebene Code hat einige Einrückungsfehler und verschiedene Auslassungen. [Minimales, vollständiges, überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) gilt hier. – Prune

+0

Ich bin sehr verwirrt ... Ihre Code-Blöcke haben eine Funktion namens 'erase_pair', aber Sie sagen' löschendes_paar' in Ihrem Satz, beziehen sie sich auf die gleiche Funktion? Willst du damit sagen, dass 'r' in deiner Funktion eine Zeichenkette darstellt? Ich würde erwarten, dass Ihr Code versagt, da '' 'für x in r' '' 'jedes Zeichen der Zeichenkette' r' machen würde, so dass 'r [x]' ziemlich ungültig wäre. –

Antwort

0

Ich werde eine kleine Änderung, um Ihre Daten zu machen, aus Gründen der Bequemlichkeit. Verwenden Sie anstelle von 10♠T♠. Dies bedeutet, dass Sie die Werte vergleichen können, indem Sie das erste Zeichen betrachten.

Zuerst sortieren. Dies bringt alle möglichen Paare nebeneinander, für eine schnelle Entfernung:

l.sort() 
l.append([None]) # This helps check at the end of the list, 
       # while avoiding accidentally reading beyond the end   
       # of the list. 

Dann gehen Sie durch die Liste paarweise, das Hinzufügen alle ungepaarten Elemente without_pairs.

without_pairs = [] 
i = 1 
while i < len(r): 
    if r[i-1][0] != r[i][0]: 
     without_pairs.append(r[i-1]) 
     i += 1 
    else: 
     i += 2  
return without_pairs 
+0

Hallo, ich habe deine Funktion ausgeführt und es gibt einen Fehler. Test ist nicht definiert. Woher kommt testl? –

+0

NameError: Name 'testl' ist nicht definiert. –

+0

Dumm mich, änderte nicht vollständig meine Variablennamen zu Ihren. Jetzt behoben (ich hoffe) –

Verwandte Themen