如何比较两个排序列表以查找具有更大数字的列表?

时间:2018-01-26 00:33:47

标签: python list

我想比较两个列表中的元素。两个列表都包含数字,并从最大到最小排序。我想找到编号最高的列表。如果它们包含相同的最高编号,我想查看下一个最高编号等。

所以,如果我有一个列表:[14, 5, 4, 3, 2]

我将其与[14, 7, 4, 3, 2]

进行比较

第二个列表会更大,因为下一个最高的数字是7.

同样,如果我有一个列表:[13, 12, 9, 7, 3]

并且:[13, 12, 9, 8, 2]

第二个将再次成为两者中较大的一个。

任何帮助将不胜感激!

我尝试了其中一条建议:

def compare_high_card(hand_a,hand_b):     '''     确定哪张牌具有最高的高牌,     如果hand_a具有更高的卡,则返回1;如果hand_b具有更高的卡,则返回-1     :param hand_a:第一手比较     :param hand_b:比较的秒针     :return:如果hand_a有更高的卡,则返回1;如果hand_b具有更高的卡,则返回-1     '''

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,19,4,3,2] hand_b = [14,1,8,5,2,2]

此代码仅输出-1。

5 个答案:

答案 0 :(得分:5)

如果列表已排序,只需执行以下操作:

a = [14, 5, 4, 3, 2]
b = [14, 7, 4, 3, 2]

print(a > b)

参考:Comparing Sequences and Other Types

  

“可以将序列对象与具有相同对象的其他对象进行比较   序列类型。比较使用词典排序:首先是   比较前两项,如果它们不同则决定了   比较结果;如果他们是平等的,接下来的两个项目是   比较,依此类推,直到任何一个序列耗尽“

答案 1 :(得分:0)

您可以使用any

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

答案 2 :(得分:0)

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")

编辑:直截了当的方式:

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")

答案 3 :(得分:0)

对于未排序的列表:

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))

答案 4 :(得分:0)

这是递归方法:

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))

输出:

[13, 12, 9, 8, 2]