我有一个列表' x'由一些数字组成,理想情况下我希望获得一个类似' a'
的列表(12, 37)
(64, 159)
(205, 225)
(239, 252)
我有以下代码,但它似乎没有做正确的事情:
{{1}}
我得到的结果如下:
{{1}}
答案 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:]