如何在列表格式中输出到列表?

时间:2016-06-07 11:45:34

标签: list python-3.x matrix

我编写了这个程序,它列出了一系列列表(确切地说是矩阵),并将对角线数字下方的值从左上角返回到右下角,为0s

def matrix(t):

    s = len(t)

    for i in range(s):
        for j in range(s):
            if j >= i:
                print(t[i][j], end='')
            else:
             print(0, end='')
        print()

t = [[2,6,8],[9,4,5],[7,2,4]]

当前(干净)输出如下:

268
045
004

我希望输出在列表形式的列表中(不那么简单和丑陋),如输入:

[[2,6,8],[0,4,5],[0,0,4]]

我试过print(t)打印出干净的输出&原始清单。说得通。

我试过了print(list(t))。再次,这给了

268[[2, 6, 8], [9, 4, 5], [7, 2, 4]] 
045[[2, 6, 8], [9, 4, 5], [7, 2, 4]] 
004[[2, 6, 8], [9, 4, 5], [7, 2, 4]]

我试过print(list(t)[i][j], end=''),但仍然给了我干净的输出。如果有的话,我希望它能给我原始列表(t),然后我就可以玩这个并看看它在哪里引导我。但这从未发生过。

我知道我需要创建一个新的m,我们现在只需将其称为new。但是,1,我是否真的需要创建一个新的变量new并给它“计算”,因为缺少一个更好的词?难道我不能在原始代码中移动一些东西吗? 2,如果我确实制作了new变量,我该如何实现?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您需要做的就是更新t的相应元素,而不是打印它们:

for i in range(s):
    for j in range(s):
        if j < i:
            t[i][j] = 0

这将更新您作为t传递给函数的对象,并在外部作用域中更改它。如果那不是您想要的,那么您需要制作一份列表的深层副本并使用它。