将列表转换为每两个元素的元组列表

10
如何将列表转换为由列表中偶数和奇数索引的元素组成的元组列表?例如,我有一个列表[0, 1, 2, 3, 4, 5],需要将其转换为[(0, 1), (2, 3), (4, 5)]
我能想到的一种方法如下所示。
l = range(5)

out = []
it = iter(l)
for x in it:
    out.append((x, next(it)))

print(out)
3个回答

23

玩转iter

it = iter(l)
[*zip(it, it)]  # list(zip(it, it))
# [(0, 1), (2, 3), (4, 5)]

你也可以按步长为2切片并使用zip

[*zip(l[::2], l[1::2]))]
# [(0, 1), (2, 3), (4, 5)]

1
对于Python3,为第一种方法list(zip(it, it))添加一个列表包装器。 - Addison Klinke

3
您也可以使用列表推导式而不需要zip来完成此操作。
l=[0, 1, 2, 3, 4, 5]
print([(l[i],l[i+1]) for i in range(0,len(l),2)])
#[(0, 1), (2, 3), (4, 5)]

-1
你可以使用Python的列表推导式来实现。
l = range(5)
out = [tuple(l[i: i + 2]) for i in range(0, len(l), 2)]
# [(0, 1), (2, 3), (4,)]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接