【发布时间】:2013-12-31 02:49:11
【问题描述】:
我有两个列表,需要通过它们的最大元素来比较它们,如果是并列的,它们的第二大元素,如果是并列的,第三大的等等迭代整个数组。
例如:
list1= [0,2,3,6,12]
list2= [1,2,3,6,12]
list3= [1,4,5,8,12]
list4= [1,4,5,9,12]
所以 list4 > list3 > list2 > list1.
我写了一个函数来完成这个:
def compare(x,y):
if sorted(x)==sorted(y):
return "Tie"
for index in range(len(x)-1,-1,-1):
if sorted(x)[index]>sorted(y)[index]:
return x
elif sorted(x)[index]<sorted(y)[index]:
return y
我想知道是否有一种更简洁、更有效的方法来编写函数,因为它看起来不是很 Pythonic。
编辑:使用“”比较列表会将列表从最小索引排序到最大索引,而不是从最大索引到最小索引。反转将使“>”和“
【问题讨论】:
-
你的文字说你想先比较它们的最大元素,但是你的代码没有这样做,它首先比较最小的元素。碰巧您选择了一个示例,其中这两个不同的排序顺序具有相同的结果。
-
很好——我想我可以通过反转范围内的索引来修复错误