1. 任务
你想创建一个多维度的列表,且同时避免隐式的引用共享。
2. 解决方案
使用列表推导。举个例子,创建一个5*10的全为0的阵列:
multilist = [ [ 0 for col in range(5) ] for row in range(10) ]
3.讨论
当我们使用这种方式时,会遇到问题:
>>> multi=[[0]*5]*3 >>> print multi [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] >>> multi[0][0]='ops' >>> print multi [['ops', 0, 0, 0, 0], ['ops', 0, 0, 0, 0], ['ops', 0, 0, 0, 0]]
这就是所谓的共享引用。
Leave a Reply