我有一个列表E = [1,2,3,4,5,6,7,8]
,并且我想以最少的计算开销将其转换为E = [{1,2}, {3,4}, {5,6}, {7,8}]
。特别是,我想将其扩展到E
的大型实例。
在Python(3.5及更高版本)中是否有一种有效的方法?
备注:E
总是以偶数大小的形式给出,因为我正在研究图形相关主题
答案 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])]