如何解决成对比较多个列表
我有 4 个列表的问题,每个列表有 4 个数字:
P1= [3,1,3,4]
P2= [5,4,7]
P3= [7,8,1]
P4= [10,2,1]
我需要以组合方式获得最大的数字,例如: 2 对:p1p2、p1p3、p1p4、p2p3、p2p4、p3p4
3 对:p1p2p3、p1p2p4、p1p3p4、p2p3p4
4 对:p1p2p3p4
结果:
p1p2= [5,7]
p1p3= [7,4]
p1p4= [10,4] ……
我编写了这个程序并将其存储在矩阵而不是列表中。 ' n= int (input("请输入矩阵大小:"))
matrix=[]
for i in range(n): #loop for rows
c=[]
for j in range(n):# loop for columns
j=int(input("enter the value of P["+str(i)+"]"+"["+str(j)+"]"))
c.append(j)
print() # to make a line between the entries
matrix.append(c) # store the matrix c in the new empty one (matrix)
for i in range(n):
for j in range(n):
print(matrix[i][j],end="")
print()
##############################################
#compar row by row element wise 2 terms
m2t=[]
for i in range(n-1):
for j in range(n):
if(matrix[i][j]>=matrix[i+1][j]):
m2t.append(matrix[i][j])
else:
m2t.append(matrix[i+1][j])
print(m2t,"#1") # check if it get here or not
print()
#printing the matrix of the 2 terms result
for a in range(n-1):
for b in range(n):
print(m2t,end="")
print()
有更好的方法吗?
解决方法
您可以尝试将 zip
与 max
一起使用。
zip
创建 pair like in case p1p4
[(3,10),(1,3),(3,2),(4,1)]
和 max
使用 max 元素,例如 [10,3,4]
p1 = [3,1,4]
p2 = [5,4,7]
p3 = [7,8,1]
p4 = [10,2,1]
p1p4 = [max(i) for i in zip(p1,p4)]
print(p1p4)
p1p3p4 = [max(i) for i in zip(p1,p3,p4)]
print(p1p3p4)
[10,4]
[10,4]
,
至少还有一种方法。等待更优雅的解决方案。
from itertools import combinations
P1= [3,4]
P2= [5,7]
P3= [7,1]
P4= [10,1]
Full_List = [P1,P2,P3,P4]
for r in range(2,5,1):
Combinations = combinations(Full_List,r)
print("Finding maximum for a combination size of %d"%r)
for eachCombination in Combinations:
print("Finding combination for tuples ",*eachCombination)
print(list(map(max,zip(*eachCombination))))
print("Done")
print()
print()
给出以下输出。
Finding maximum for a combination size of 2
Finding combination for tuples [3,4] [5,7]
[5,7]
Done
Finding combination for tuples [3,4] [7,1]
[7,4]
Done
Finding combination for tuples [3,4] [10,1]
[10,4]
Done
Finding combination for tuples [5,7] [7,7]
Done
Finding combination for tuples [5,7] [10,7]
Done
Finding combination for tuples [7,1] [10,1]
Done
Finding maximum for a combination size of 3
Finding combination for tuples [3,7]
Done
Finding maximum for a combination size of 4
Finding combination for tuples [3,7]
Done
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。