假設有 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)
推薦使用第二個高階函數的方法排序