通过“ n”生成网格/嵌套列表“ n”

时间:2018-11-13 19:44:23

标签: python nested-lists

所以,我的想法是,我试图创建一个宽度和高度相等的嵌套列表,其中填充了1到100之间的随机整数。

我的代码是:

我的错误是int类型对于类似的输出+ =不能下标...

我会以错误的方式处理吗?还是我错过了什么?

谢谢!

import random

def generateRandomGrid(n):

    randomList = []
    for i in range(n) :
        randomList.append(random.randint(1,100))
    for i in range(n):
        output=random.randint(1,100)
        for j in range(n):
            output+= str(randomList[i][j]) + random.randint(1,100)
        print(output)

def main() :

    print(generateRandomGrid(5))
main()

4 个答案:

答案 0 :(得分:5)

列表理解是您的朋友:

grid = [[randint(1, 100) for _ in range(100)] for _ in range(100)]

转换为功能:

def generate_random_grid(n):
    return [[randint(1, 100) for _ in range(n)] for _ in range(n)]

更优雅:

def generate_random_grid(size, min=1, max=100):
    return [[randint(min, max) for _ in range(size)] for _ in range(size)]

注意: 如果使用python 2.7或更早版本,请为range更改xrange

答案 1 :(得分:0)

如果我的理解正确,那么您需要一个宽度和高度相等的列表。

import random

def generateRandomGrid(n):
    randomList = []
    for i in range(n) :
        num = random.randint(1,100)
        randomList.append([num, num])
    return randomList


def main() :
    print(generateRandomGrid(5))

main()

输出:
[[92, 92], [8, 8], [10, 10], [37, 37], [11, 11]]

答案 2 :(得分:0)

也许您正在寻找:

$null

答案 3 :(得分:0)

一个简单的选择是使用numpy的随机整数函数,因此

import numpy as np
def generateRandomGrid(n):
    return np.random.randint(1,101,(n,n)).tolist()