Zip Elemente mit geraden und ungeraden Indizes in einer Liste

8

Ich möchte gerade und ungerade Elemente in einer Liste zippen, um eine Liste von Paaren zu erstellen:

%Vor%

Was ist der prägnanteste Ausdruck, um dies in eleganter und funktionaler Weise zu tun?

    
Alexander Temerev 08.04.2010, 16:19
quelle

6 Antworten

7

In 2.8 würden Sie wahrscheinlich Methoden verwenden:

%Vor%

(Dies ist 2.8.0 Beta1; der letzte Stamm hat collect anstelle von partialMap .)

In 2.7 - und kein schlechter zweiter Platz in 2.8 - könntest du eine rekursive Methode erstellen, wie es legoscia gemacht hat:

%Vor%

Edit: Hier ist ein weiterer kürzerer Ansatz, der auch auf 2.7 funktioniert:

%Vor%

(Beachten Sie die Verwendung von drop(1) anstelle von tail , damit es mit leeren Listen funktioniert.)

    
Rex Kerr 08.04.2010, 17:19
quelle
4

in Scala 2.8 können Sie tun:

%Vor%     
Seth Tisue 08.04.2010 17:19
quelle
4

Nicht getestet:

%Vor%     
legoscia 08.04.2010 16:30
quelle
3

Der einzige Vorteil, dass alle die offensichtlichsten Möglichkeiten haben, dies zu tun, ist, dass ich mir alternative Lösungen überlegen muss. Also hier ist eine, die auf Scala 2.8 funktioniert. Ersetzen Sie auf Scala 2.7 view durch projection .

%Vor%

Streng genommen ist view / projection unnötig, aber es vermeidet unnötige Erzeugung von Zwischenergebnissen.

Andere lustige Möglichkeiten, es zu tun:

%Vor%

PS: Bonuspunkt auf wer auch immer das Wortspiel bekommt. ; -)

    
Daniel C. Sobral 08.04.2010 17:57
quelle
1
%Vor%     
missingfaktor 08.04.2010 17:24
quelle
1

Dies ermöglicht unvollständige Paare:

%Vor%     
user unknown 08.04.2010 18:17
quelle

Tags und Links