我想比较两个列表中的元素。两个列表都包含数字,并从最大到最小排序。我想找到编号最高的列表。如果它们包含相同的最高编号,我想查看下一个最高编号等。
所以,如果我有一个列表:[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。
答案 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]