我才发现用[[]]*4的方式和[[] for i in range(4)]的方式去初始化列表是不一样的。这个问题导致我代码出现了难以发现的错误。简单来说,第一种方式会导致在往第一个子列表中加入元素时,同时往所有子列表中加入元素。这样的错误导致我预处理训练数据时标签和数据对应错误,从而训练失效。所以还是需要第二种方式去初始化列表。
a=[[]]*4
a[0].append(1)
a
Out[17]: [[1], [1], [1], [1]]
我才发现用[[]]*4的方式和[[] for i in range(4)]的方式去初始化列表是不一样的。这个问题导致我代码出现了难以发现的错误。简单来说,第一种方式会导致在往第一个子列表中加入元素时,同时往所有子列表中加入元素。这样的错误导致我预处理训练数据时标签和数据对应错误,从而训练失效。所以还是需要第二种方式去初始化列表。
a=[[]]*4
a[0].append(1)
a
Out[17]: [[1], [1], [1], [1]]