2016-11-17 30 views
0

我在想什麼pythonic方式來完成以下將是。假設我有一個列表:按順序連接列表中的元素對

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

我想獲得一個列表,它看起來像:

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

所以它必須把原來的列表作爲一個迭代器,爲了執行移動串聯。

我會認爲這可以通過某種列表理解和使用iter()函數來完成,但是到目前爲止我的嘗試中沒有運氣!我正在使用Python 2.7。

回答

4

使用zip()與切片days[1:]和原days,列表中的理解,以扭轉元件對的滑動窗口遍歷:

>>> 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

使用列表理解與羅列,遍歷列表中排除最後一個項目

>>> 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']