我有一个形状列表
[1,2,3,4,5,6,7,8]
Run Code Online (Sandbox Code Playgroud)
我怎么能把它变成
[(1,2),(3,4),(5,6),(7,8)]
Run Code Online (Sandbox Code Playgroud)
很快?(清单很大.)
使用grouper recipe,将处理奇怪的长度:
def grouper(iterable, n, fillvalue=None):
"Collect data into fixed-length chunks or blocks"
# grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx
args = [iter(iterable)] * n
return izip_longest(fillvalue=fillvalue, *args)
Run Code Online (Sandbox Code Playgroud)
像这样使用它:
>>> from itertools import izip_longest # needed for grouper helper
>>> list(grouper([1,2,3,4,5,6,7], 2))
[(1, 2), (3, 4), (5, 6), (7, None)]
Run Code Online (Sandbox Code Playgroud)