>>> P=[i[:] for i in [[()]*3]*3]
>>> P[0][0]=1
>>> P
[[1, (), ()], [(), (), ()], [(), (), ()]
它也比使用范围稍快。来自ipython shell:
In [1]: timeit P = [ [()]*3 for i in range(3) ]
1000000 loops, best of 3: 1.41 us per loop
In [2]: timeit P=[i[:] for i in [[()]*3]*3]
1000000 loops, best of 3: 1.27 us per loop
列表是可变的,将列表乘以数字不会复制其元素。您可以尝试将其更改为列表理解,这样它将评估
[()]*3
三次,创建三个不同的列表:您也可以这样编写它,它的优点是显示结构
[[()]*3]*3
它也比使用范围稍快。来自ipython shell:
你引用了同一个列表3次。
你想这样做:
相关问题 更多 >
编程相关推荐