我尝试使用大小为nxn的列表打印一种二维数组。我遇到的问题是该列表成为最后一组随机数。
例如,如果第一组数字是[1,5,7],则metaList变为[[1,5,7],1,2]。但是,如果第二组数字是[3,4,5],则元列表将变为[[3,4,5],[3,4,5],2]最终列表是三个相同的列表,但我希望他们与众不同。
对不起,如果这很简单的话。提前感谢您提供的任何帮助。这是代码。
import random
n = 3
def aBuilder():
metaList = range(n)
tempList = range(n)
for x in range(n):
metaList[x] = tempList
print metaList
for y in range (n):
tempList[y] = random.randint(1,9)
print tempList[y]
return metaList
def printList(List):
for x in range(n):
print List[x]
printList(aBuilder())
答案 0 :(得分:3)
问题是metaList
仅保留对tempList
的引用,因此当tempList
更改时,metaList
中的项目也会更改。解决方案是更改行
metaList[x] = tempList
到
metaList[x] = tempList[:]
为了复制tempList
每个作业。
对您的问题更简单的解决方案可能如下所示:
import random
def randlists(n, start, to):
return [[random.randint(start,to) for i in range(n)] for i in range(n)]
print(randlists(3,1,9))