如何使用python在元组矩阵中的元组中获得最大或最小元素值?


rows = int(input("Enter the Number of rows : "))
column = int(input("Enter the Number of Columns: "))
print("Enter the elements of First Matrix:")
matrix_a = [[tuple(map(float, input().split(" "))) for i in range(column)] for i in range(rows)]
print("First Matrix is: ")
for n in matrix_a:
print(n)
print("Enter the elements of Second Matrix:")
matrix_b = [[tuple(map(float, input().split(" "))) for i in range(column)] for i in range(rows)]
print("second Matrix is: ")
for n in matrix_b:
print(n)
result = [[0 for i in range(column)] for i in range(rows)]

for i in range(rows):
for j in range(column):
res = tuple(map(lambda i, j : max(i, j) , matrix_a, matrix_b))
print("Maximum of Above two Matrices is : ")
for r in res:
print(r)

得到如下输出:

Enter the Number of rows : 
2
Enter the Number of Columns: 
2
Enter the elements of First Matrix:
5 6 7
3 4 5
1 2 3
7 8 9
First Matrix is: 
[(5.0, 6.0, 7.0), (3.0, 4.0, 5.0)]
[(1.0, 2.0, 3.0), (7.0, 8.0, 9.0)]
Enter the elements of Second Matrix:
6 3 7
8 4 6
9 8 5
2 5 7
second Matrix is: 
[(6.0, 3.0, 7.0), (8.0, 4.0, 6.0)]
[(9.0, 8.0, 5.0), (2.0, 5.0, 7.0)]
Maximum of Above two Matrices is : 
[(6.0, 3.0, 7.0), (8.0, 4.0, 6.0)]
[(9.0, 8.0, 5.0), (2.0, 5.0, 7.0)]

我该怎么做才能在矩阵的元组中得到(max, min, min)值

例如if

matrix1 = 
[(5.0, 6.0, 7.0), (3.0, 4.0, 5.0)]
[(1.0, 2.0, 3.0), (7.0, 8.0, 9.0)]
matrix2= 
[(6.0, 3.0, 7.0), (8.0, 4.0, 6.0)]
[(9.0, 8.0, 5.0), (2.0, 5.0, 7.0)]
I need the result to be 
[(6.0, 3.0, 7.0), (8.0, 4.0, 5.0)]
[(9.0, 2.0, 3.0), (7.0, 5.0, 7.0)]

。,考虑matrix1(5.0, 6.0, 7.0)中的tuple1和matrix2中的tuple2(6.0, 3.0, 7.0),那么我希望得到的元组为(最大{5.0,6.0},最小{6.0,3.0},min {7.0, 7.0}) = (6.0, 3.0, 7.0)

您可以使用列表推导式:

result = [
[(max(matrix_a[row][col][0], matrix_b[row][col][0]),
*(min(a, b) for a, b in zip(matrix_a[row][col][1:], matrix_b[row][col][1:]))
)
for col in range(column)
]
for row in range(rows)
]
print("Maximum of Above two Matrices is : ")
for r in result:
print(r)

表达
max(matrix_a[row][col][0], matrix_b[row][col][0])

计算每一对单元格的第一个分量的最大值在你的两个矩阵中相同的位置

然后表达

*[min(a, b) for a, b in zip(matrix_a[row][col][1:], matrix_b[row][col][1:])]

压缩两个单元格和的下一个元素(多亏了[1:])生成一个包含最小元素的列表。

*运算符使列表变平,这意味着在最后整个表达式等价于:

(
max(matrix_a[row][col][0], matrix_b[row][col][0]),
min(matrix_a[row][col][1], matrix_b[row][col][1]),
min(matrix_a[row][col][2], matrix_b[row][col][2]),
...
)

产生预期结果。