使用包含随机数的其他列表填写列表的问题。

时间:2014-07-02 14:28:21

标签: python list random

我尝试使用大小为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())

1 个答案:

答案 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))