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

标签 python list append

我有一个带有值的 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/

相关文章:

python - 如何检查 python 中的列或行(或对角线)是否都相等

python - 在 Python 中标记数据(将数据转换为模式)

python - 类的初始值,python

python - 在特定深度的字典上添加项目

java - 在 Java 中获取列表内的字段详细信息,而无需大的 if else 条件

jquery - 如何使用 JQuery 在列表中间添加列表项

制表符后的 Python 正则表达式匹配整数

javascript - 仅在不存在时将脚本添加到头部

javascript - Onclick window.location 并传递参数

python-3.x - 按嵌套列表上的索引删除