2016-11-17 2 views
0

Ich frage mich, was der pythonische Weg, um das Folgende zu erreichen wäre. Angenommen, ich habe eine Liste:Verkettung Element-Paare einer Liste der Reihe nach

days = ['m', 't', 'w', 'r', 'f', 's', 's'] 

Ich mag würde eine Liste erhalten, die aussehen würde:

['t-m', 'w-t', 'r-w', 'f-r', 's-f', 's-s'] 

so würde es die ursprüngliche Liste als Iterator behandeln müssen und bewegen, um auszuführen die Verkettung.

Ich würde denken dies könnte durch eine Art Listenverständnis und Verwendung der iter() Funktion, aber kein Glück in meinen Versuchen so weit erreicht werden! Ich benutze Python 2.7.

Antwort

4

Verwenden zip() mit einer Scheibe days[1:] und die ursprünglichen days, in einer Liste Verständnis, ein Schiebefenster reversed Elementpaar iterieren:

>>> days = ['m', 't', 'w', 'r', 'f', 's', 's'] 
>>> ['-'.join(pair) for pair in zip(days[1:], days)] 
['t-m', 'w-t', 'r-w', 'f-r', 's-f', 's-s'] 
0

Verwenden Liste Verständnis mit Aufzählen iterieren Liste auszuschließen letztes Element

>>> days = ['m', 't', 'w', 'r', 'f', 's', 's'] 
>>> ['{}-{}'.format(days[n+1], i) for n,i in enumerate(days[:-1])] 
['t-m', 'w-t', 'r-w', 'f-r', 's-f', 's-s'] 
Verwandte Themen