我用python编写了以下代码:
#-*-coding:cp1252-*-
from random import randint
matriz = [[0] * 5] * 5
print matriz
for i in range(5):
for j in range(5):
numero = randint(0,10)
matriz[i][j] = numero
for i in matriz:
print i
为什么所有的行都一样???你知道吗
例如,生成随机双列表:
[0, 5, 1, 0, 10]
[0, 5, 1, 0, 10]
[0, 5, 1, 0, 10]
[0, 5, 1, 0, 10]
[0, 5, 1, 0, 10]
谢谢。你知道吗
这归因于Python处理变量的方式,当您执行
matriz = [[0] * 5] * 5
时,列表matriz
的每个元素都是指向内存中相同列表的指针。你知道吗要完成您想做的事情,请使用这个
matriz = [ [0]*5 for n in xrange(5)]
,以便每个子列表在内存中都是自己的列表。你知道吗你的矩阵由5个相同列表的引用组成。避免这种情况的最短方法是按照以下几点进行嵌套理解:
相关问题 更多 >
编程相关推荐