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

时间:2018-12-31 17:47:30

标签: python

如何将列表转换为元组列表?元组由位于列表的偶数和奇数索引处的元素组成。例如,我有一个列表[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)

4 个答案:

答案 0 :(得分:10)

iter一起玩:

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

您还可以分步2和zip

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

答案 1 :(得分:3)

使用列表理解:

[(x, y) for x, y in zip(l[::2],l[1::2])]
[(0, 1), (2, 3), (4, 5)]

答案 2 :(得分:1)

您也可以使用不带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)]

答案 3 :(得分:-1)

您可以实现对Python列表理解的使用。

l = range(5)
out = [tuple(l[i: i + 2]) for i in range(0, len(l), 2)]
# [(0, 1), (2, 3), (4,)]