How to compare two sorted lists to find the list with the greater number?
我正在尝试比较两个列表中的元素。两个列表都包含数字,并从最大到最小排序。我想找到号码最多的单子。如果它们包含相同的最高数字,我想查看下一个最高数字,等等。
所以如果我有一个单子:
我把它比作:
第二个列表会更大,因为下一个最高的数字是7。
同样,如果我有一个清单:
和:
第二个将是两个中较大的一个。
任何帮助都将不胜感激!
我尝试了以下建议之一:
def比较u高u卡(手a,手):’’确定哪只手的牌最高,如果手牌A的牌高,则返回1;如果手牌B的牌高,则返回1:param hand_a:要比较的第一手:param hand_b:要比较的第二手:return:1如果hand_a有更高的卡,返回1;如果hand_b有更高的卡,返回1。’’
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | hand_a = sort_hand_by_value(hand_a) hand_b = sort_hand_by_value(hand_b) hand_length = 5 for index in range(hand_length): if hand_a[index] > hand_b[index]: higher_hand = 1 break elif hand_b[index] > hand_a[index]: higher_hand = -1 break else: higher_hand = 0 return higher_hand |
hand_a=[14、9、4、3、2]hand_b=[14、8、5、3、2]
此代码只打印出-1。
如果列表已排序,只需执行以下操作:
1 2 3 4 | a = [14, 5, 4, 3, 2] b = [14, 7, 4, 3, 2] print(a > b) |
参考:比较序列和其他类型:
"Sequence objects may be compared to other objects with the same
sequence type. The comparison uses lexicographical ordering: first the
first two items are compared, and if they differ this determines the
outcome of the comparison; if they are equal, the next two items are
compared, and so on, until either sequence is exhausted"
号
这里是递归方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | data1=[13, 12, 9, 7, 3] data2=[13, 12, 9, 8, 2] def comapre(lst1,lst2): vb=sorted(lst1,reverse=True) rb=sorted(lst2,reverse=True) ss=max(vb) pp=max(rb) if ss==pp: return comapre(vb[1:],rb[1:]) elif ss>pp: return data1 else: return data2 print(comapre(data1,data2)) |
。
输出:
1 | [13, 12, 9, 8, 2] |
。
对于未排序的列表:
1 2 3 4 5 6 7 8 9 | testListA = [13, 12, 9, 7, 3, 30] testListB = [13, 12, 9, 8, 2] def getbiggerlist(list_a: list, list_b: list): return sorted(list_a) > sorted(list_b) print(getbiggerlist(testListA, testListB)) |
1 2 3 4 5 6 7 8 9 10 11 12 | A=[14, 5, 4, 3, 2] B=[14, 7, 4, 3, 2] for x in range(0,len(A)): if A[x]>B[x]: print("A is bigger") break elif A[x]<B[x]: print("B is bigger") break elif x==len(A)-1: print("The arrays are equal") |
编辑:简单方法:
1 2 3 4 5 6 7 8 9 | A=[14, 5, 4, 3, 2] B=[14, 7, 4, 3, 2] if a>b: print("A is bigger") elif a<b: print("B is bigger") else: print("Both are the same") |
。
您可以使用
1 2 3 | a = [14, 5, 4, 3, 2] b = [14, 7, 4, 3, 2] print(any(i > c for i, c in zip(a, b)) #checking if a > b |
号