我必须生成一个非常大的列表10^5个列表,每个列表包含(10^5)个元素。稍后,我需要对不同的列表执行不同的操作
例如:
我试过了
u=[0 for i in xrange(10^^5)]
v=[u for j in xrange(10^^5)]
当我尝试对特定列表执行操作时,它会影响列表中的所有列表
例如:
for x in xrange(1000):
for y in xrange(0:100):
v[x][y]=1
print v
我希望这个“print v”显示类似于[[1,0,0...],[0,0,0...],[0,0,0],[]....10^^5 times]
的内容,但它恰好为列表中的所有列表显示[[1,0,0...],[1,0,0...],[1,0,0],[1,0,0....]....10^^5 times]
(注意:我没有运行整个循环)
后来我试过了
v=[[for j in xrange(10^^5)] for j in xrange(10^^5)]
完成了我想要的手术,效果很好,但花费的时间很长。有人能告诉我为什么第一个案子不起作用吗。还请让我知道生成重复列表列表的有效方法,并在不影响其他列表的情况下执行这些操作
另外,请让我知道使用numpy等库实现它的任何其他方法
v
有4个元素,每个元素指向u
。改变一个,它就会改变所有,它也会改变u
但是如果我使用
u[:]
copy来制作w
,那么w
的每个子列表都是唯一的。改变一个不会改变其他的,也不会改变u
(或v
):构造
w
会更慢,并且会占用更多内存。但是它应该比[[0 for i in range(5)] for j in range(4)]
快,并且占用相同的内存量考验时代
相关问题 更多 >
编程相关推荐