Ich weiß, dass eine Liste verbunden werden kann, um eine lange Zeichenfolge zu erstellen, wie in:
x = ['a', 'b', 'c', 'd']
print ''.join(x)
Offensichtlich würde dies Folgendes ausgeben:
'abcd'
Ich versuche jedoch, einfach die erste und die zweite Zeichenfolge in der Liste zu verbinden, dann die dritte und vierte Zeichenfolge und so weiter. Kurz gesagt, erzielen Sie aus dem obigen Beispiel stattdessen eine Ausgabe von:
['ab', 'cd']
Gibt es eine einfache Möglichkeit, dies zu tun? Ich sollte wahrscheinlich auch erwähnen, dass die Länge der Zeichenfolgen in der Liste unvorhersehbar ist, ebenso wie die Anzahl der Zeichenfolgen in der Liste, obwohl die Anzahl der Zeichenfolgen immer gerade sein wird. Die ursprüngliche Liste könnte also genauso gut sein:
['abcd', 'e', 'fg', 'hijklmn', 'opq', 'r']
Antworten:
Sie können die Slice-Notation mit folgenden Schritten verwenden:
Die gleiche Logik gilt auch für Listen. Die Länge der Zeichenfolge spielt keine Rolle, da Sie einfach zwei Zeichenfolgen addieren.
quelle
x[:::2]
Fall wird ein Objektx[1::2]
erstellt, ein anderes Objekt erstellt. Diese Kreationen basieren wahrscheinlich auf der Berechnung von Indizes unter der Haube. Ein Aufruf einer Funktion mit diesen beiden als Argumente übergebenen Objekten ist erforderlich, bevor die aufeinanderfolgenden Elementpaare abgerufen werden können das muss verkettet werden. Während in kevpies Antwort nur ein Iterator erstellt wird, springt die Iteration von Element zu Element der unberührten Liste, ohne sich um die Indizes kümmern zu müssen, und das ist weitaus pythonischer.itertools.islice
anstelle von [] die Zwischenobjekte. Da beide Antworten unter denselben Bedingungen funktionieren und dieselben zurückgeben, haben beide Recht. Undzip(i[::2], i[1::2])
sieht für mich so süß aus, warum also nicht? :)Verwenden Sie einen Iterator.
Listenverständnis:
Generatorausdruck:
Verwenden Sie map, str .__ add__, iter
next (Iterator [, Standard]) ist ab Python 2.6 verfügbar
quelle
nur um pythonisch zu sein :-)
Falls Sie alarmiert werden möchten, wenn die Listenlänge ungerade ist, können Sie Folgendes versuchen:
Viel Glück
quelle
Ohne temporäre Listen zu erstellen:
oder:
quelle
quelle
Nun, ich würde es so machen, da ich mit Regs nicht gut bin.
CODE
Ausgabe:
Hoffe das hilft :)
quelle