2016-11-17 3 views
0

Мне интересно, что такое питонический способ выполнить следующее. Предположим, у меня есть список:Сочетание пар элементов списка последовательно

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'] 
Смежные вопросы