<p>正如上面两位炼金术士所说的,没有什么东西需要预先初始化一个大小,但是如果你知道你的数组将是什么大小的话,效率通常是需要的。你知道吗</p>
<p>查看generic <code>copy</code>模块</p>
<pre><code>>>from copy import copy as cp
>>a = [[] for _ in range(4)]
>>a
a = [[],[],[],[]]
>>b = cp(a)
>>a[1] = 4
>>a
a = [[],4,[],[]]
b = [[],[],[],[]]
</code></pre>
<p>但你仍然需要三行字:</p>
<pre><code>itemDateNums = [[] for _ in range(sizeNeeded)]
itemWeights = cp(itemDateNums)
itemVolumes = cp(itemVolumes)
</code></pre>
<p>如果你真的想的话,也可以买两个,但它不那么漂亮:</p>
<pre><code>itemDateNums = [[] for _ in range(sizeNeeded)]
itemWeights, itemVolumes = cp(itemDateNums), cp(itemDateNums)
</code></pre>
<p>我不确定有没有更干净的方法来实现这一点,使用标准库,而不安装NumPy或类似的。但如果我发现了我会更新的。你知道吗</p>
<p><strong>编辑</strong>:还可以查看<code>copy.deepcopy</code>:
<a href="https://stackoverflow.com/questions/17246693/what-exactly-is-the-difference-between-shallow-copy-deepcopy-and-normal-assignm">What exactly is the difference between shallow copy, deepcopy and normal assignment operation?</a></p>
<p>另外,正如托比亚斯5在下面提到的,<code>a = [[]]*4</code>是不安全的:</p>
<pre><code>>>a = [[]]*4
>>b = [[] for _ in range(4)]
>>a[0].append(5)
>>b[0].append(5)
>>print ('a:{}\nb:{}'.format(a,b))
a: [[5], [5], [5] ,[5]]
b: [[5], [], [], []]
</code></pre>