重要知識點:所有的數據結構,都可以用函數建造
比如列表:c = [a[i]+b[i]) for i in range(0,len(a))] 後面加個for循環就行了
比如字典:C={i:b for b, i in enumerate(B)}
sorted 函數 的key傳入的是可以對輸入數列做操作的函數
Input:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6]
Output:[2,2,2,1,4,3,3,9,6,7,19]
將arr1根據arr2的順序排序
方法一:
return sorted(arr1, key=(arr2+sorted(arr1)).index)
解釋:
首先,整個的排序過程是,如果arr1的值在arr2中,則按照arr2排序,反之按照arr1排序
所以我用arr2+已經排序好的arr1,然後用sorted函數,key是index
方法二:
A=sorted(set(arr1)-set(arr2))
B=arr2+A
k = {b: i for i, b in enumerate(B)}
return sorted(arr1, key=lambda a: k.get(a))
我以前也不知道字典還能這麼搞,先生成一個字典,內容是B的值加B的index
然後把B變成arr2+已經排序好的arr1比arr2多的元素、
使用sorted函數,key是字典的index