Python 3.x 不使用numpy打印下三角矩阵

Python 3.x 不使用numpy打印下三角矩阵,python-3.x,matrix,Python 3.x,Matrix,我想打印给定的矩阵,它已经在下三角船上了。我试着写代码,你可以在下面看到。但是结果给了我一个列表中所有这些元素的列表,我希望它以不同的行打印每一行,就像以矩阵的形式一样。任何帮助都将不胜感激 L1 = [0, 20, 30, 40] L2 = [20, 0, 50, 60] L3 = [30, 50, 0, 70] L4 = [40, 60, 70, 0] distance = [L1, L2, L3, L4] mylist = []

我想打印给定的矩阵,它已经在下三角船上了。我试着写代码,你可以在下面看到。但是结果给了我一个列表中所有这些元素的列表,我希望它以不同的行打印每一行,就像以矩阵的形式一样。任何帮助都将不胜感激

    L1 = [0, 20, 30, 40]
    L2 = [20, 0, 50, 60]
    L3 = [30, 50, 0, 70]
    L4 = [40, 60, 70, 0]

    distance = [L1, L2, L3, L4]

    mylist = []
    for i in range(len(distance)):
      for j in range(len(distance[i])):
        if i > j:
        mylist.append(distance[i][j])

    print(mylist)
这导致 [20,30,50,40,60,70]

我要打印出来 [20]、[30,50]、[40,60,70]]


注意:英语是我的第二语言,所以请说明语法错误。谢谢

您可以只附加片而不是单个元素:

L1 = [0, 20, 30, 40]
L2 = [20, 0, 50, 60]
L3 = [30, 50, 0, 70]
L4 = [40, 60, 70, 0]

distance = [L1, L2, L3, L4]

mylist = []
for i, l in enumerate(distance[1:]):
    mylist.append(l[:i+1])

print(mylist)

# [[20], [30, 50], [40, 60, 70]]
或使用理解:

[l[:i+1] for i, l in enumerate(distance[1:])] 
根据评论进行编辑

enumerate只是将值和索引结合在一起的一种更具python风格的方法。您可以使用range,但它并不像pythonic:

for i in range(1, len(distance)):
    mylist.append(distance[i][:i])

[j[:i]对于i,j,如果i>0]这两个函数都起作用,但我们还没有看到枚举函数。所以我希望我可以不用这个函数就完成它。非常感谢您的帮助:@user3521035您不需要使用enumerate查看编辑。