2016-05-06 15 views
-1

Ich versuche, eine Liste von Tupeln zu fusionieren, sagen: test = [('X','X'),('O','O'),('X','X')] in test_merge = ['XX','OO','XX']Python: Mit join() und Karte() für eine Liste von Tupeln

Und ich von einer anderen Person gelesen, dass er/sie verwendet:

Karte ('' beitreten, zu testen.)
und bekam:
[ 'XX', 'OO', 'XX']

Also dachte ich über eine andere Art und Weise versuchen:

'' .join (Karte (str, Test))
und bekam:
„('X', 'X') ('O' , 'O') ('X', 'X')“

ich verstehe, dass ''.join nicht ohne die test eine Liste der Zeichenfolge verwendet werden kann, ist. Aber mit der gleichen map() und join(), wie kommt es map(''join, test) gelingt, die Werte in einem Tupel zusammenzuführen? Danke vielmals!

+0

Wenn ich Karte (''. Join, Test) ausführen, bekomme ich ['XX', 'OO', 'XX']. Haben Sie einen Tippfehler in Ihrer Testzeichenkette? –

+0

Danke für das Hinzeigen. Tatsächlich gibt es einen Tippfehler. Ich habe es jetzt behoben. – Nahua

Antwort

1

map() sendet jedes Element in der iterable an die angegebene Funktion. Sehen Sie, was passiert, wenn wir jede der Funktionen rufen Sie versucht:

>>> ''.join(('X', 'X')) 
'XX' 
>>> str(('X', 'X')) 
"('X', 'X')" 

Wie Sie sehen können, ''.join alle übergebenen iterable Argumente mit einem Trennzeichen eines leeren String verbindet, produziert die gewünschten Ergebnisse. str erzeugt jedoch die Zeichenfolgendarstellung des übergebenen Objekts, wie oben gezeigt, die in diesem Fall eine tuple ist. Es wird nicht versucht, irgendeine andere Art von Verarbeitung für das übergebene Objekt durchzuführen.

+0

Hallo TigerhawkT3, vielen Dank für die Klarstellung. Ich bin gestern Abend selbst durch einen Prozess gegangen und jetzt macht alles Sinn! – Nahua

0

Sie können es auf diese Weise tun:

[''.join(x) for x in test] 
+2

Ich denke OP fragt, warum sie die Ergebnisse bekommen haben, die sie bekommen haben, anstatt nach alternativen Wegen zu fragen, um eine Aufgabe zu erfüllen, die sie bereits tun können (ohne Erklärung). – TigerhawkT3

Verwandte Themen