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

How to compare two sorted lists to find the list with the greater number?

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

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

我把它比作:[14, 7, 4, 3, 2]

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

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

和:[13, 12, 9, 8, 2]

第二个将是两个中较大的一个。

任何帮助都将不胜感激!

我尝试了以下建议之一:

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


您可以使用any

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