如何从 python 中的偶数长度列表创建 "list of pairs"?
How to create "list of pairs" from an even-length list in python?
我有一个这样的列表,其中包含偶数个元素:
straight_list = [1, 2, 3, 4, 5, 6]
此列表中有六个项目。我想将它们分成 三对 ,像这样:
paired_list = [(1, 2), (3, 4), (5, 6)]
最好的方法是什么?更一般地说,给定一个包含 2*n
项的列表,创建 n
对列表的最佳方法是什么?我想出了以下内容:
straight_list = [1, 2, 3, 4, 5, 6]
paired_list = []
for i in range(len(straight_list)//2):
j = i*2
pair = (straight_list[j], straight_list[j+1])
paired_list.append(pair)
print(paired_list)
# [(1, 2), (3, 4), (5, 6)]
我也可以这样弄,虽然绕口令:
[tuple(x) for x in list(np.array(straight_list).reshape(len(straight_list)//2,2))]
# [(1, 2), (3, 4), (5, 6)]
是否有更优雅、更实用、and/or“Pythonic”的方式来创建这个配对列表?
(在某些方面,这几乎是这个问题的反面:"How to make a flat list out of a list of lists?")
简单的列表理解怎么样?
paired_list = [(straight_list[i], straight_list[i+1]) for i in range(0, len(straight_list), 2)]
我有一个这样的列表,其中包含偶数个元素:
straight_list = [1, 2, 3, 4, 5, 6]
此列表中有六个项目。我想将它们分成 三对 ,像这样:
paired_list = [(1, 2), (3, 4), (5, 6)]
最好的方法是什么?更一般地说,给定一个包含 2*n
项的列表,创建 n
对列表的最佳方法是什么?我想出了以下内容:
straight_list = [1, 2, 3, 4, 5, 6]
paired_list = []
for i in range(len(straight_list)//2):
j = i*2
pair = (straight_list[j], straight_list[j+1])
paired_list.append(pair)
print(paired_list)
# [(1, 2), (3, 4), (5, 6)]
我也可以这样弄,虽然绕口令:
[tuple(x) for x in list(np.array(straight_list).reshape(len(straight_list)//2,2))]
# [(1, 2), (3, 4), (5, 6)]
是否有更优雅、更实用、and/or“Pythonic”的方式来创建这个配对列表?
(在某些方面,这几乎是这个问题的反面:"How to make a flat list out of a list of lists?")
简单的列表理解怎么样?
paired_list = [(straight_list[i], straight_list[i+1]) for i in range(0, len(straight_list), 2)]