使用 Python 交换矩阵的对角线

pythonserver side programmingprogramming

在本文中,我们将学习一个用于交换矩阵对角线的 Python 程序。

假设我们已采用 NxN 输入矩阵。现在,我们将使用以下方法交换输入矩阵的对角线。

使用的方法

以下是完成此任务的各种方法 -

  • 使用带有临时变量的嵌套 For 循环

  • 使用","交换运算符

算法(步骤)

以下是执行所需任务所要遵循的算法/步骤。 −

  • 创建一个变量来存储矩阵的输入

  • 创建一个函数printGivenMatrix()来打印给定的矩阵。

  • 在 printGivenMatrix() 函数内部,使用 For 循环遍历给定矩阵的行。

  • 使用另一个嵌套 For 循环遍历当前行的列。

  • 打印当前行和列的相应矩阵元素。

  • 创建一个函数swapMatDiagonals(),通过接受输入矩阵作为参数来交换输入矩阵的对角线。

  • 使用for 循环遍历矩阵的行矩阵。

  • 使用 if 条件 语句检查行索引是否不等于矩阵行数的一半。

  • 如果条件为 ,则使用临时变量交换对角线元素。

  • 创建一个变量来存储输入矩阵。

  • 通过将输入矩阵作为参数传递来调用上面定义的 swapMatDiagonals() 函数,以交换矩阵的对角线。

  • 通过调用 printGivenMatrix() 方法再次打印输入矩阵。

方法 1:使用嵌套 For 循环和临时变量

示例

以下程序交换使用嵌套 for 循环和临时变量的矩阵对角线 −

# 创建一个函数来打印给定的矩阵
def printGivenMatrix(inputMatrix):
   # 遍历输入矩阵的行
      for p in range(rows):
         # 遍历输入矩阵当前行对应的列
            for q in range(rows):
               # 打印当前行和列的元素
                  print(inputMatrix[p][q], end=" ")
            # 打印新行来分隔行
            print()
# 创建一个函数来交换矩阵的对角线
# 通过接受输入矩阵作为参数
def swapMatDiagonals(inputMatrix):
   # 遍历矩阵的行
      for p in range(rows):
         # 检查行索引是否不是矩阵行的一半
         if (p != rows / 2):
            # 使用临时变量交换对角线元素
               tempVariable = inputMatrix[p][p]
               inputMatrix[p][p] = inputMatrix[p][rows - p - 1]
               inputMatrix[p][rows - p - 1] = tempVariable
# 输入矩阵的行数
rows = 3
# 输入矩阵(3x3 矩阵)
inputMatrix = [[5, 1, 3],
               [6, 10, 8],
               [7, 2, 4]]
print("给定矩阵为:")
printGivenMatrix(inputMatrix)
print("交换输入矩阵的对角线:")
#调用上述 swapMatDiagonals() 函数,绕过输入矩阵
swapMatDiagonals(inputMatrix)
#交换矩阵对角线后再次打印矩阵
printGivenMatrix(inputMatrix)

输出

执行时,上述程序将生成以下输出 -

给定矩阵为:
5 1 3
6 10 8
7 2 4
交换输入矩阵的对角线:
3 1 5
6 10 8
4 2 7

时间复杂度 − O(N)

其中 N 表示行数或列数,因为我们只使用一个循环来交换指定矩阵的对角线。

辅助空间 − O(1)。因为我们不使用任何额外空间。

方法 2:使用','交换运算符

示例

以下程序使用','(交换)运算符交换矩阵的对角线 −

# 创建一个函数来打印给定的矩阵
def printGivenMatrix(inputMatrix):
    # 遍历输入矩阵的行
      for p in range(rows):
         # 遍历当前行对应的列
            for q in range(rows):
               # 打印当前行和列的元素
                  print(inputMatrix[p][q], end=" ")
            # 打印新行来分隔行
            print()
# 创建一个函数来交换矩阵的对角线
def swapMatDiagonals(inputMatrix):
   # 遍历矩阵的行
      for p in range(rows):
         # 检查行索引是否不是矩阵行的一半
         if (p != rows / 2):
            # 使用 ','(交换运算符)交换对角线元素
               inputMatrix[p][p], inputMatrix[p][rows - p - 1] =  inputMatrix[p][rows - p - 1], inputMatrix[p][p]
# 输入矩阵的行数
rows = 3
# 输入矩阵(3x3 矩阵)
inputMatrix = [[5, 1, 3],
               [6, 10, 8],
               [7, 2, 4]]
print("给定矩阵为:")
printGivenMatrix(inputMatrix)
print("交换输入矩阵的对角线:")
# 调用上述 swapMatDiagonals() 函数
swapMatDiagonals(inputMatrix)
# 交换矩阵对角线后再次打印矩阵
printGivenMatrix(inputMatrix)

输出

执行时,上述程序将生成以下输出 -

给定矩阵为:
5 1 3
6 10 8
7 2 4
交换输入矩阵的对角线:
3 1 5
6 10 8
4 2 7

时间复杂度 − O(N)

辅助空间 − O(1)。因为我们没有使用任何额外的空间。

结论

在本文中,我们学习了两种交换矩阵对角线元素的不同方法。此外,我们还学习了如何使用交换运算符(",")交换两个变量而不占用额外空间。(临时变量)


相关文章