现给定一个 n x m矩阵 请先找出每列元素的最大值 合计m个 然后输出这 m个值中的最小值。矩阵用列表表示
例:list1=[[1,2][3,4][5,6]]表示的是一个3*2的矩阵
1 2
3 4
5 6
每列的最大值分别为5和6,最小值为5
即:最后程序的输入是一个列表,输出的是找出的每列的最大值和这些最大值中的最小值。
如果是要从输入获取矩阵的值,可以先获取n和m的值,然后在循环中获取nxm列矩阵的输入,然后依然循环遍历列表的每一行的同一列以寻找最大值,最后在用min函数计算每一列最大值中的最小值即可,代码如下:
n=int(input("请输入n的值:"))
m=int(input("请输入m的值:"))
list1=[]
# 获取n行m列的矩阵值
for i in range(n):
mlist=[]
for j in range(m):
num = int(input("请输入第"+str(i+1)+"行第"+str(j+1)+"列的值:"))
mlist.append(num)
list1.append(mlist)
mmax=[] # 存储每列的最大值
for i in range(m):
mnum = list1[0][i]
for j in range(n): # 寻找每列的最大值
# print("list[",j,"][",i,"]=",list1[j][i],'mnum=',mnum,'\n')
if mnum< list1[j][i]:
# print("mnum=",mnum,"list[",j,"][",i,"]=",list1[j][i],'\n')
mnum=list1[j][i]
mmax.append(mnum) # 把每列的最大值添加到列表
#print(list1)
#打印每列的最大值,并打印最大值中的最小值
print("每列的最大值分别为:",mmax,",最小值为;",min(mmax))
下面定义了一个 min_of_maxes 函数,用于求出一个矩阵的每列的最大值中的最小值。它首先计算出矩阵的列数,然后遍历每一列,找出每列的最大值并存储在 maxes 列表中。最后,它遍历 maxes 列表,找出最大值中的最小值并返回。
def min_of_maxes(matrix: List[List[int]]) -> int:
# 计算矩阵的列数
num_columns = len(matrix[0])
# 初始化一个列表,存储每列的最大值
maxes = [0] * num_columns
for i in range(num_columns):
# 遍历每一列,找出最大值
for row in matrix:
maxes[i] = max(maxes[i], row[i])
# 找出最大值中的最小值
min_of_maxes = float('inf')
for max_val in maxes:
min_of_maxes = min(min_of_maxes, max_val)
return min_of_maxes
list1 = [[1, 2], [3, 4], [5, 6]]
print(min_of_maxes(list1)) # 输出: 5
list2 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(min_of_maxes(list2)) # 输出: 4
def find_min_max(matrix):
# 取出矩阵的列数
column_count = len(matrix[0])
# 初始化一个列表来存每列的最大值
column_maxes = [0] * column_count
# 遍历矩阵的每一行
for row in matrix:
# 遍历这一行的每一列
for i, value in enumerate(row):
# 如果当前列的最大值小于这一列的值,就更新最大值
if column_maxes[i] < value:
column_maxes[i] = value
# 返回每列最大值的最小值
return min(column_maxes)
# 例如:
matrix = [[1, 2], [3, 4], [5, 6]]
print(find_min_max(matrix)) # 输出: 5