Python中常用的排序方法有内置函数sorted()、sort()和使用sorted()函数的sorted()方法。当涉及到数组的相对排序时,可以使用sorted()函数结合lambda表达式来解决。
例如,给定一个数组arr1和一个数组arr2,要求按照arr2中元素的顺序对arr1进行排序,如果arr1中有元素不在arr2中,则将这些元素按照升序排在最后:
arr1 = [2, 3, 1, 4, 6, 5]
arr2 = [2, 1, 3]
sorted_arr = sorted(arr1, key=lambda x: (arr2.index(x) if x in arr2 else len(arr2), x))
print(sorted_arr)
输出结果为:[2, 1, 3, 4, 5, 6]。在这个例子中,lambda表达式用来指定排序的规则,首先按照arr2中元素的顺序排序,如果元素不在arr2中,则将其按照升序排在最后。
相关例题:
给你两个数组,arr1
和 arr2
,arr2
中的元素各不相同,arr2
中的每个元素都出现在 arr1
中。
对 arr1
中的元素进行排序,使 arr1
中项的相对顺序和 arr2
中的相对顺序相同。未在 arr2
中出现过的元素需要按照升序放在 arr1
的末尾。
示例 1:
输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6] 输出:[2,2,2,1,4,3,3,9,6,7,19]
示例 2:
输入:arr1 = [28,6,22,8,44,17], arr2 = [22,28,8,6] 输出:[22,28,8,6,17,44]
提示:
1 <= arr1.length, arr2.length <= 1000
0 <= arr1[i], arr2[i] <= 1000
arr2
中的元素arr2[i]
各不相同arr2
中的每个元素arr2[i]
都出现在arr1
中
详细代码:
def custom_sort(x):
if x in arr2:
return (0, arr2.index(x))
else:
return (1, x)
arr1=[2,3,1,3,2,4,6,7,9,2,19]
arr2 = [2,1,4,3,9,6]
arr1 = sorted(arr1, key=custom_sort)
print(arr1)
每天坚持学习python,大家一起进步!冲刺蓝桥杯的过程也要好好体验,其中也能学到很多东西,有什么问题欢迎大家在评论区提出来哦!!!