按顺序连接列表的元素对
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']
我想知道完成以下任务的 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']