(Python)如何将整数列表转换为集合列表,其中每个集合都是一对这些整数?

时间:2018-08-19 03:30:00

标签: python python-3.x list set

我有一个列表E = [1,2,3,4,5,6,7,8],并且我想以最少的计算开销将其转换为E = [{1,2}, {3,4}, {5,6}, {7,8}]。特别是,我想将其扩展到E的大型实例。

在Python(3.5及更高版本)中是否有一种有效的方法?

备注:E总是以偶数大小的形式给出,因为我正在研究图形相关主题

3 个答案:

答案 0 :(得分:3)

我认为最好的方法是在列表理解中使用iter + zip

s = iter(E)
[{a,b} for a,b in zip(s,s)]

说明:zip(s,s)E的有效成对分组方式。

答案 1 :(得分:2)

您可以在E的2个滚动切片上进行迭代:

[set(E[i:i+2]) for i in range(0, len(E), 2)]

请注意,这也适用于奇数大小的列表。

答案 2 :(得分:1)

您还可以使用zip()加上切片:

[{x, y} for x, y in zip(E[::2], E[1::2])]