【问题标题】:Is there any quick way to print in 3x3 matrix form? [duplicate]有没有快速打印 3x3 矩阵形式的方法? [复制]
【发布时间】:2021-01-08 16:57:32
【问题描述】:

用户可以输入任何值,程序将打印最终矩阵。这里我使用矩阵加法以 3x3 的形式显示矩阵。我想知道是否有任何捷径可以让我们的矩阵仍为 3x3 形式?

这是我的代码:

print('Consider matrix mij with i rows & j colomns:')
a=int(input('Enter m11 value: '))
b=int(input('Enter m12 value: '))
c=int(input('Enter m13 value: '))
d=int(input('Enter m21 value: '))
e=int(input('Enter m22 value: '))
f=int(input('Enter m23 value: '))
g=int(input('Enter m31 value: '))
h=int(input('Enter m32 value: '))
i=int(input('Enter m33 value: '))
X=[[a,b,c],
   [d,e,f],
   [g,h,i]]
Y=[[0,0,0],
   [0,0,0],
   [0,0,0]]
print('Your matrix is:')
for i in range(len(X)):
    for j in range(len(X[0])):
        X[i][j]=X[i][j]+Y[i][j]
for r in X:
    print(r)

【问题讨论】:

    标签: python python-3.x for-loop matrix


    【解决方案1】:

    确实,您可以使用 f-strings 来实现这一点。

    print(f"[{X[0][0]} {X[0][1]} {X[0][2]}]\n[{X[1][0]} {X[1][1]} {X[1][2]}]\n [{X[2][0]} {X[2][1]} {X[2][2]}]")
    

    拿这个样本:

    f"[{X[0][0]} {X[0][1]} {X[0][2]}]\n"
    

    这里,{} 里面的值被里面的表达式替换了。 \n 充当特殊字符,在换行符上继续打印。

    您可以使用此代码更快地进行输入:

    X = [[input(f"Enter m{i}{j}: ") for j in range(3)] for i in range(3)]
    

    这称为列表推导,您可以对其进行扩展以获取任意数量的值。

    【讨论】:

    • 谢谢,这如我所愿。你的代码的最后一行应该是 [{X[2][0]} {X[2][1]} {X[2][2]}] 虽然:P
    • 还有什么办法可以缩短输入代码?像我们可以使用任何其他方式获取所有 9 个输入吗?
    • 是的,你也可以用很少的代码做到这一点。我会把它添加到答案中。
    【解决方案2】:
    fm=list(map(int,input().split())) //first matrix
    sm=list(map(int,input().split())) //second matrix
    print("answer:")
    for i in range(9):
        print(fm[i]+sm[i],end=' ')
        if i%3==2:
            print()
    

    【讨论】:

      【解决方案3】:

      一种可能的解决方案是使用 numpy:

      import numpy as np
      a=1
      b=2
      c=3
      d=4
      e=5
      f=6
      g=7
      h=8
      i=9
      X=[[a,b,c],
         [d,e,f],
         [g,h,i]]
      
      print(np.matrix(X))
      

      输出是:

      [[1 2 3]
       [4 5 6]
       [7 8 9]]
      
      

      【讨论】:

      • 值得注意的是the documentation for np.matrix中的评论“不再推荐使用这个类,即使是线性代数。而是使用常规数组。这个类将来可能会被删除。”
      【解决方案4】:

      使用理解来压缩您的答案,例如: [i for i in range[condition]]

      使用理解可能会对您有所帮助

      【讨论】:

        猜你喜欢
        • 2012-08-31
        • 2011-05-21
        • 1970-01-01
        • 2021-02-11
        • 1970-01-01
        • 2019-07-03
        • 1970-01-01
        • 2011-09-24
        • 2019-04-20
        相关资源
        最近更新 更多