如何从数字列表中构建元组列表?

时间:2018-04-08 18:24:44

标签: python list loops

我有一个列表' x'由一些数字组成,理想情况下我希望获得一个类似' a'

的列表
(12, 37)
(64, 159)
(205, 225)
(239, 252)

我有以下代码,但它似乎没有做正确的事情:

{{1}}

我得到的结果如下:

{{1}}

2 个答案:

答案 0 :(得分:0)

您可以按索引访问每个元素:

x = [12, 37, 64, 159, 205, 225, 239, 252, 257] 
new_x = [[x[i], x[i+1]] for i in range(len(x)-1)]

输出:

[[12, 37], [37, 64], [64, 159], [159, 205], [205, 225], [225, 239], [239, 252], [252, 257]]

但是,基于zip的解决方案需要简单的列表切片:

new_x = list(zip(x, x[1:]))

输出:

[(12, 37), (37, 64), (64, 159), (159, 205), (205, 225), (225, 239), (239, 252), (252, 257)]

答案 1 :(得分:-1)

x = [12, 37, 64, 159, 205, 225, 239, 252, 257]
print([i for i in zip(x[::1], x[1::])])

输出:

[(12, 37), (37, 64), (64, 159), (159, 205), (205, 225), (225, 239), (239, 252), (252, 257)]

在切片时,你需要注意步骤编号,因为你使用2作为步骤编号,它总是使用第二个元素作为它的位置。 所以相反写x[::2]你应该写x[::1]现在切片的默认步骤为1因此你不需要提及它所以你只能写x而不是{ {1}}对于下一个,您只需撰写x[::1]而不是x[1:]