擅长:python、mysql、java
<p>我注意到不同的技术生成了不同的结构(正如我在一篇评论中所指出的),这种重写产生了相同的结构,但正如@juanpa arrivillaga所指出的,您实际上得到了对单个列表的多个引用,当您开始为数组元素赋值时,就会显示出来</p>
<pre><code>import time
from pprint import pprint
n = 999 # for time test
# n = 5 # for structure printout test.
t0 = time.time()
arr1 = [[None] * n] * n
t1 = time.time()
print(t1 - t0)
t0 = time.time()
arr2 = [[None] * n for _ in range(n)]
t1 = time.time()
print(t1 - t0)
t2 = time.time()
arr3 = [[None for _ in range(n)] for _ in range(n)]
t3 = time.time()
print(t3 - t2)
if n<20:
print (len(arr1),len(arr1[0]))
pprint (arr1)
print (len(arr2),len(arr2[0]))
pprint (arr2)
print (len(arr3),len(arr3[0]))
pprint (arr3)
</code></pre>