蟒蛇。在循环中填充数组

时间:2020-02-22 01:34:50

标签: python arrays

我需要创建2d数组并将其填充到循环中。 我知道我需要多少行,但是我不知道循环后每一行的大小。 在C ++中,我可以使用:

vector<vector<int>> my_vec(3);
my_vec[0].push_back(1);
my_vec[0].push_back(2);
my_vec[1].push_back(3);
my_vec[2].push_back(4);

我将拥有:
1 2
3
4

但是当我尝试使用python时:

aa = [[] * 0] * 3
aa[0].append(5)
aa

输出为:[[5],[5],[5]]

我认为这是python创建数组的方式,所有单元均引用同一内存点。对?这就是为什么如果我给aa [0] = [1,2]分配一些新值,那么我可以附加到aa [0]上,而不会影响其他行。

那么我该如何解决呢?创建一个空数组,然后填充它,将元素一一添加到我需要的行中。 我可以使用numpy数组。 谢谢。

1 个答案:

答案 0 :(得分:1)

将列表与数字相乘会得到一个列表和对同一列表的许多引用,并且在修改一个元素时要修改所有元素,这是对的,要解决此问题,您可以尝试使用列表理解:

aa = [[] for _ in range(3)]

或for循环:

aa = []

for _ in range(3):
    aa.append([])