gpt4 book ai didi

python 列表操作垂直嵌套,使其看起来像一个矩阵

转载 作者:太空宇宙 更新时间:2023-11-04 09:03:42 25 4
gpt4 key购买 nike

我有以下列表。在 python 中,它看起来像 [15,20,25,35,-20... etc]

15  20  25  35  -20 -15 -10 -5
10 15 20 25 -25 -20 -15 -10
5 10 15 20 -35 -25 -20 -15

我想像这样垂直嵌套:

[[15,10,5],[20,15,10],[25,20,15],[35,25,20],[-20,-25,-35], ...等等]

所以它涉及某种转置操作,但倒数,例如转置会给你 [5,10,15] 而不是列表中第一项的 [15,10,5]

最好的方法是什么? (最短和最易读的代码)

如果有人对最短运行时间也有建议,对更大的数据集也有帮助。

最佳答案

您可以使用列表理解对元素进行分组,然后使用 zip 函数将其转置,如下所示

data = [15, 20, 25, 35, -20, -15, -10, -5, 10, 15, 20,
25, -25, -20, -15, -10, 5, 10, 15, 20, -35, -25, -20, -15]
length = len(data) / 3
data = [data[i:i + length] for i in xrange(0, len(data), length)]

到目前为止,我们将数据分组如下

[[15, 20, 25, 35, -20, -15, -10, -5],
[10, 15, 20, 25, -25, -20, -15, -10],
[5, 10, 15, 20, -35, -25, -20, -15]]

现在,我们只需转置数据,使用zip

print zip(*data)

输出

[(15, 10, 5),
(20, 15, 10),
(25, 20, 15),
(35, 25, 20),
(-20, -25, -35),
(-15, -20, -25),
(-10, -15, -20),
(-5, -10, -15)]

zip(*data) 表示我们解压缩data 的所有元素并将每个元素作为参数传递给zip。相当于

zip(data[0], data[1], data[2])

关于python 列表操作垂直嵌套,使其看起来像一个矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22953550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com