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查看编辑。