按顺序连接列表的元素对

Concatenating element pairs of a list sequentially

我想知道完成以下任务的 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.

在列表推导中将 zip() 与切片 days[1:] 和原始 days 一起使用,以迭代反向元素对的滑动 window:

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

将列表理解与枚举结合使用,遍历列表排除最后一项

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