Python程序员的逻辑任务。从列表生成列表的元组

Python程序员的逻辑任务。从列表生成列表的元组,python,list,Python,List,我需要做两个项目的列表元组 例如,如果我有列表范围(10) 我需要这样制作元组: [(0,1),(2,3),(4,5),(6,7),(8,9)] 如何实现这一点?请参阅itertools文档中的: from itertools import izip_longest def grouper(n, iterable, fillvalue=None): """ >>> grouper(3, 'ABCDEFG', 'x') ["ABC", "DEF", "

我需要做两个项目的列表元组

例如,如果我有列表
范围(10)

我需要这样制作元组:

[(0,1),(2,3),(4,5),(6,7),(8,9)]
如何实现这一点?

请参阅
itertools
文档中的:

from itertools import izip_longest

def grouper(n, iterable, fillvalue=None):
    """
    >>> grouper(3, 'ABCDEFG', 'x')
    ["ABC", "DEF", "Gxx"]
    """
    args = [iter(iterable)] * n
    return izip_longest(fillvalue=fillvalue, *args)
这意味着您可以执行以下操作:

[(el[0], el[1]) for el in grouper(2, range(10))]
或者更一般地说:

[(el[0], el[1]) for el in grouper(2, elements)]
请参阅
itertools
文档中的:

from itertools import izip_longest

def grouper(n, iterable, fillvalue=None):
    """
    >>> grouper(3, 'ABCDEFG', 'x')
    ["ABC", "DEF", "Gxx"]
    """
    args = [iter(iterable)] * n
    return izip_longest(fillvalue=fillvalue, *args)
这意味着您可以执行以下操作:

[(el[0], el[1]) for el in grouper(2, range(10))]
或者更一般地说:

[(el[0], el[1]) for el in grouper(2, elements)]

有很多不同的方法。只是为了炫耀一下:

作为列表理解,其中l是一个序列(即整数索引):
[(l[i],l[i+1]),用于范围(0,len(l),2)]中的i

作为发电机功能,适用于所有iterables:

def some_meaningful_name(it):
    it = iter(it)
    while True:
        yield next(it), next(it)
通过列表切片(对于更大的列表,性能糟糕)和复制,再次使用列表理解:
[在zip中成对(l[::2],l[1::2])]


我喜欢第二个最好的,而且它可能是最具python风格和通用性的(因为它是一个生成器,它在恒定的空间中运行)。

许多不同的方式。只是为了炫耀一下:

作为列表理解,其中l是一个序列(即整数索引):
[(l[i],l[i+1]),用于范围(0,len(l),2)]中的i

作为发电机功能,适用于所有iterables:

def some_meaningful_name(it):
    it = iter(it)
    while True:
        yield next(it), next(it)
通过列表切片(对于更大的列表,性能糟糕)和复制,再次使用列表理解:
[在zip中成对(l[::2],l[1::2])]

我喜欢第二个最好的,它可能是最具python风格和通用性的(因为它是一个生成器,它在恒定的空间中运行)。

也可以通过以下方式完成:

也可以通过以下方式完成:

重复的可能重复:重复的可能重复:重复的可能重复:我要写列表的可能重复(grouper(2,范围(10)))我要写列表(grouper(2,范围(10)))