如何在python中将列表项重新排列为配对的元组/列表?

Nat*_*tal -2 python

我有一个形状列表

[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)

很快?(清单很大.)

Bur*_*lid 6

使用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)