假設有兩個數組,其中的元素都是數字,如今要對其排序

假設有 number,group,兩個數組,其中的元素都是數字,如今要對其排序排序的規則以下:數組

1.若是 group裏面元素,存在於numbers了裏面app

2.要把出如今 group 內的數字 放在 number 的那些數字以前,注意排序ide

numbers = [8, 3 ,1, 2, 5,4,7,6]

group = {2,3,5,7}

分析了下,應該是優先級的問題,這裏使用了元組排序的方法:函數

numbers = [8, 3 ,1, 2, 5,4,7,6]
group = {2,3,5,7}
tmp = []
for x in numbers:
    if x in group:
        tmp.append((0, x))
    else:
        tmp.append((1, x))
tmp.sort()
print(list(map(lambda x:x[1], tmp)))

在網上看到了一個經典的代碼:code

def sort_priority(values,group):
    def helper(x):
        if x in group:
            return (0, x)
        return (1, x)
    values.sort(key=helper)

numbers = [8, 3 ,1, 2, 5,4,7,6]

group = {2,3,5,7}
sort_priority(numbers, group)
print(numbers)

推薦使用第二個高階函數的方法排序

相關文章
相關標籤/搜索