gpt4 book ai didi

python - 将列表 append 到循环中的列表 (Python)

转载 作者:行者123 更新时间:2023-12-01 23:15:19 25 4
gpt4 key购买 nike

我有一个带有值的 Python 列表,例如:

a = [[0, 0, 0], [1, 0, 1], [1, 1, 0], [0, 1, 1]]

我想在循环中将新列表“b” append 到列表“a”。

b = [[2, 1, 0], [3, 0, 1], [4, 1, 0], [2, 1, 1]]

结果应如下所示(将“b”添加到“a”时):

[[[0, 0, 0], [1, 0, 1], [1, 1, 0], [0, 1, 1]], [[2, 1, 0], [3, 0, 1], [4, 1, 0], [2, 1, 1]]]

现在,我想将列表 b 添加到列表 a 中 N 次。ab 的形状都是 (4,3)结果应具有以下形状:(N+1,4,3)

我该怎么做?

最佳答案

native Python 列表不会按照您在此处期望的方式运行,如一些评论中所述,因此如果您可以使用第 3 方库,请考虑 NumPy ,它的行为更像您期望的值矩阵,然后可以转换回 Python 列表

设置

>>> a = [[0, 0, 0], [1, 0, 1], [1, 1, 0], [0, 1, 1]]
>>> b = [[2, 1, 0], [3, 0, 1], [4, 1, 0], [2, 1, 1]]

垂直复制b

  • np.tile() 的第二个参数描述了每个维度的复制
  • .reshape() 将其准备为 3 维数组
>>> import numpy as np
>>> b_tiled = np.tile(np.array(b), (4,1)).reshape(4,4,3)
>>> b_tiled
array([[[2, 1, 0],
[3, 0, 1],
[4, 1, 0],
[2, 1, 1]],

[[2, 1, 0],
[3, 0, 1],
[4, 1, 0],
[2, 1, 1]],

[[2, 1, 0],
[3, 0, 1],
[4, 1, 0],
[2, 1, 1]],

[[2, 1, 0],
[3, 0, 1],
[4, 1, 0],
[2, 1, 1]]])

ab_tiled收集到同一个数组中

注意 a 应该 reshape 或 [a] 以匹配 b_tiled

的形状
>>> np.vstack((np.array([a]), b_tiled))
array([[[0, 0, 0],
[1, 0, 1],
[1, 1, 0],
[0, 1, 1]],

[[2, 1, 0],
[3, 0, 1],
[4, 1, 0],
[2, 1, 1]],

[[2, 1, 0],
[3, 0, 1],
[4, 1, 0],
[2, 1, 1]],

[[2, 1, 0],
[3, 0, 1],
[4, 1, 0],
[2, 1, 1]],

[[2, 1, 0],
[3, 0, 1],
[4, 1, 0],
[2, 1, 1]]])

.tolist()

您可以使用 .tolist() 再次制作原生 Python 列表,尽管它作为 numpy 数组对您来说可能更方便

>>> np.vstack((np.array([a]), b_tiled)).tolist()
[[[0, 0, 0], [1, 0, 1], [1, 1, 0], [0, 1, 1]], [[2, 1, 0], [3, 0, 1], [4, 1, 0], [2, 1, 1]], [[2, 1, 0], [3, 0, 1], [4, 1, 0], [2, 1, 1]], [[2, 1, 0], [3, 0, 1], [4, 1, 0], [2, 1, 1]], [[2, 1, 0], [3, 0, 1], [4, 1, 0], [2, 1, 1]]]

关于python - 将列表 append 到循环中的列表 (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69018653/

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