Python 3x3矩阵格式不正确

Python 3x3矩阵格式不正确,python,Python,我试图创建一个3x3的矩阵,但它一直作为一行返回。这是我迄今为止尝试过的代码 def createSymmetricMat(n): m = [] for i in range(n): r = [] for j in range(n): r.append(3*i+j) print() m.append(r) return m print(createSymmetricMat(3))

我试图创建一个3x3的矩阵,但它一直作为一行返回。这是我迄今为止尝试过的代码

def createSymmetricMat(n):
    m = []
    for i in range(n):
        r = []
        for j in range(n):
            r.append(3*i+j)
        print()
        m.append(r)
    return m

print(createSymmetricMat(3))
这是回报

[[0, 1, 2], [3, 4, 5], [6, 7, 8]]
有什么建议吗

def createSymmetricMat(n):
    m = []
    for i in range(n):
        r = []
        for j in range(n):
            r.append(3*i+j)
        m.append(r)

        # print m when updated
        print(m)
    return m

createSymmetricMat(3)
如果要在每次更新
m
时打印,只要在更新
m
时添加一个
print(m)
。然后可以将整个矩阵打印为:

for row in createSymmetricMat(3):
    print(row)
如果要在每次更新
m
时打印,只要在更新
m
时添加一个
print(m)
。然后可以将整个矩阵打印为:

for row in createSymmetricMat(3):
    print(row)

我认为3x3矩阵的这种表示法没有问题。如果您希望在创建矩阵后视觉上正确,可以执行以下操作:

for r in createSymmetricMat(3):
    print(r)
这给了你:

[0, 1, 2]
[3, 4, 5]
[6, 7, 8]

我认为3x3矩阵的这种表示法没有问题。如果您希望在创建矩阵后视觉上正确,可以执行以下操作:

for r in createSymmetricMat(3):
    print(r)
这给了你:

[0, 1, 2]
[3, 4, 5]
[6, 7, 8]

createSymmetricMat
函数中调用
print
,然后返回
m
,这是一个列表列表。函数外部的打印只打印您在函数内部调用的
print
,然后返回
m
,这是一个列表列表。函数外部的打印只打印
m
这也正是我想要的。我不知道我是否理解它为什么这么做?@Gavin你是说它为什么要一行打印?在python中,
print
函数就是这样工作的。没什么特别的。如果你想让列表中的元素以你想要的方式可视化,你需要自己去做。如何将createSymmetricMat(n):print(r)``中r的``添加到函数中?因此,它将始终以视觉上正确的形式返回?如果您希望函数返回矩阵,即列表列表,那么您将无法返回,python将始终以您显示的方式打印列表列表。如果您想让函数以直观的方式正确打印它,那么您不需要返回值,只需按照Harshal的答案在循环中添加
print(r)
。请注意,您仍然可以使用返回矩阵值的函数。谢谢。非常有用。现在更有意义了。这也正是我想要的。我不知道我是否理解它为什么这么做?@Gavin你是说它为什么要一行打印?在python中,
print
函数就是这样工作的。没什么特别的。如果你想让列表中的元素以你想要的方式可视化,你需要自己去做。如何将createSymmetricMat(n):print(r)``中r的``添加到函数中?因此,它将始终以视觉上正确的形式返回?如果您希望函数返回矩阵,即列表列表,那么您将无法返回,python将始终以您显示的方式打印列表列表。如果您想让函数以直观的方式正确打印它,那么您不需要返回值,只需按照Harshal的答案在循环中添加
print(r)
。请注意,您仍然可以使用返回矩阵值的函数。谢谢。非常有用。现在更有意义了。