我想知道完成以下操作的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。
答案 0 :(得分: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']
答案 1 :(得分: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']