我需要创建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数组。 谢谢。
答案 0 :(得分:1)
将列表与数字相乘会得到一个列表和对同一列表的许多引用,并且在修改一个元素时要修改所有元素,这是对的,要解决此问题,您可以尝试使用列表理解:
aa = [[] for _ in range(3)]
或for循环:
aa = []
for _ in range(3):
aa.append([])