gpt4 book ai didi

python - 如何重复移动和填充列表中的元素以获得列表列表?

转载 作者:行者123 更新时间:2023-11-28 21:16:12 27 4
gpt4 key购买 nike

我有一个列表 A = [1, 2, 3, ..., n] 并且想要重复移动列表以获得列表列表。第一行应该是A,第二行应该是[2, 3, 4, ...],第三行是[3, 4, 5, . ..],直到最后一行 [n, 0, 0, ...]。最后一列中缺失的元素应该为零。我试图将它们单独放置,但 n >= 100 因此手动填充零会花费很长时间。我该怎么做?

编辑 numpy 数组的相同问题,这是我真正拥有的。

最佳答案

>>> a = [1, 2, 3, 4]
>>> [ a[i:] + i*[0] for i in range(len(a))]
[[1, 2, 3, 4], [2, 3, 4, 0], [3, 4, 0, 0], [4, 0, 0, 0]]

工作原理

要获得第 i 个移位列表,我们可以使用:a[i:] + i*[0]。列表理解对我们需要的所有 i 重复执行此操作。

使用 numpy

+ 对 numpy 数组的意义与对普通 python 列表的意义不同。因此,上面的代码需要调整以适应 numpy:

>>> import numpy as np
>>> a = np.arange(1, 5)
>>> [ np.concatenate((a[i:], np.zeros(i))) for i in range(len(a))]
[array([1, 2, 3, 4]),
array([2, 3, 4, 0]),
array([3, 4, 0, 0]),
array([4, 0, 0, 0])]

如果你希望最终结果是一个 numpy 数组:

 >>> np.array([np.concatenate((a[i:], np.zeros(i))) for i in range(len(a)) ])
array([[ 1., 2., 3., 4.],
[ 2., 3., 4., 0.],
[ 3., 4., 0., 0.],
[ 4., 0., 0., 0.]])

关于python - 如何重复移动和填充列表中的元素以获得列表列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29085980/

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