我在python中的for循环中有奇怪的行为.问题不是这个问题,而是非常类似于:
a = []
b = [1,2,3,4]
for i in xrange (0,10):
a.append(b)
b[3] += 1
Run Code Online (Sandbox Code Playgroud)
结果是:
a = [[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14]]
Run Code Online (Sandbox Code Playgroud)
我期待的结果是
a = [[1,2,3,4],[1,2,3,5],[1,2,3,6],[1,2,3,7],.....,[1,2,3,14]]
Run Code Online (Sandbox Code Playgroud)
我不知道为什么在每次迭代时,b [3]最多加14,然后列表[1,2,3,14]被添加到a.我认为b [3]在每次迭代时应该只增加1
我用这两条简单的线条得到了一个奇怪的结果
char* reverse = (char*) malloc(sizeof(char)*19);
cout << sizeof(reverse)/sizeof(char) << endl;
Run Code Online (Sandbox Code Playgroud)
无论我放在第一行的数字(在这个例子中,它是19).我总是得到4作为输出.怎么了 ?谢谢.