Python程序:交换矩阵中第一列和最后一列的元素
需求分析
我们需要编写一个Python程序,将给定的矩阵中第一列和最后一列的元素进行交换。具体实现流程包括以下几个步骤:
- 输入一个矩阵,并将其存储为一个二维数组;
- 编写函数,将矩阵的第一列和最后一列进行交换
- 输出交换后的矩阵
代码实现
输入矩阵
首先我们需要编写函数input_matrix(),用于输入矩阵并将其存储为一个二维数组。
import re
def input_matrix():
'''输入矩阵并返回二维数组'''
while True:
matrix_string = input("请输入矩阵,矩阵元素之间用空格隔开,行与行之间用回车隔开:\n")
# 使用正则表达式去掉多余的空格和换行符
matrix_string = re.sub('[\n\r\s]+', ' ', matrix_string).strip()
# 将字符串转化为二维数组
rows = matrix_string.split(' ')
try:
matrix = [list(map(int, rows[i:i+len(rows)//len(rows[0])])) for i in range(0, len(rows), len(rows)//len(rows[0]))]
return matrix
except ValueError:
print("输入的矩阵不合法,请重新输入。")
通过输入一个矩阵的字符串形式,我们使用正则表达式去掉多余的空格和换行符,并将其转换为一个二维数组。在输入时,如果输入的矩阵不合法,则会提示输入错误并要求重新输入。
交换矩阵的第一列和最后一列
为了交换矩阵的第一列和最后一列,我们可以先将矩阵每一行的第一列元素与最后一列元素交换位置,再将所有行的第一列和最后一列交换位置。
def swap_columns(matrix):
'''交换矩阵中第一列和最后一列的元素'''
# 将每一行的第一列和最后一列进行交换
for i in range(len(matrix)):
matrix[i][0], matrix[i][-1] = matrix[i][-1], matrix[i][0]
# 将矩阵第一列和最后一列进行交换
for i in range(len(matrix)):
matrix[i][0], matrix[i][-1] = matrix[i][-1], matrix[i][0]
return matrix
该函数直接接收输入的二维数组,通过两个循环实现第一列和最后一列的交换。
输出交换后的矩阵
最后,我们需要编写函数print_matrix(),用于输出交换后的矩阵。
def print_matrix(matrix):
'''打印输出矩阵'''
print("交换后的矩阵为:")
for row in matrix:
print(" ".join([str(x) for x in row]))
通过使用join()函数连接每行元素,并在每行后面添加换行符实现输出。
完整代码
import re
def input_matrix():
'''输入矩阵并返回二维数组'''
while True:
matrix_string = input("请输入矩阵,矩阵元素之间用空格隔开,行与行之间用回车隔开:\n")
# 使用正则表达式去掉多余的空格和换行符
matrix_string = re.sub('[\n\r\s]+', ' ', matrix_string).strip()
# 将字符串转化为二维数组
rows = matrix_string.split(' ')
try:
matrix = [list(map(int, rows[i:i+len(rows)//len(rows[0])])) for i in range(0, len(rows), len(rows)//len(rows[0]))]
return matrix
except ValueError:
print("输入的矩阵不合法,请重新输入。")
def swap_columns(matrix):
'''交换矩阵中第一列和最后一列的元素'''
# 将每一行的第一列和最后一列进行交换
for i in range(len(matrix)):
matrix[i][0], matrix[i][-1] = matrix[i][-1], matrix[i][0]
# 将矩阵第一列和最后一列进行交换
for i in range(len(matrix)):
matrix[i][0], matrix[i][-1] = matrix[i][-1], matrix[i][0]
return matrix
def print_matrix(matrix):
'''打印输出矩阵'''
print("交换后的矩阵为:")
for row in matrix:
print(" ".join([str(x) for x in row]))
if __name__ == '__main__':
matrix = input_matrix()
swapped_matrix = swap_columns(matrix)
print_matrix(swapped_matrix)
结论
通过编写以上代码,我们可以实现交换矩阵中第一列和最后一列的元素。这个程序可以在很多实际应用中发挥重要作用,比如有时候我们需要将某些数据集的第一列和最后一列进行交换,以便更好地进行数据分析和处理。