我编写了这个程序,它列出了一系列列表(确切地说是矩阵),并将对角线数字下方的值从左上角返回到右下角,为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
变量,我该如何实现?
答案 0 :(得分:1)
如果我理解正确,您需要做的就是更新t
的相应元素,而不是打印它们:
for i in range(s):
for j in range(s):
if j < i:
t[i][j] = 0
这将更新您作为t
传递给函数的对象,并在外部作用域中更改它。如果那不是您想要的,那么您需要制作一份列表的深层副本并使用它。