在Python中重新排序列表中的值的算法

jcp*_*jcp -2 python algorithm

我有一个整数数组说:

arr = [1,2,3,4,5,6,7,8,9,10]
Run Code Online (Sandbox Code Playgroud)

以及另外两个定义我应该如何重新排序的数组:

A = [1,4,5,7,8]
B = [1,3,4,5,6]
Run Code Online (Sandbox Code Playgroud)

A和B具有相同的尺寸.

我想以arr一种方式重新排序,使得值在值A之前B,但是在任一个数组中都没有显示的值保持在同一个位置.例如:

>>> reorder(arr, A, B)
[1, 2, 4, 5, 7, 8, 3, 6, 9, 10]
Run Code Online (Sandbox Code Playgroud)

Sun*_*tha 5

>>> C = iter(A + [b for b in B if b not in A])
>>> [next(C) if e in A+B else e for e in arr]
[1, 2, 4, 5, 7, 8, 3, 6, 9, 10]
Run Code Online (Sandbox Code Playgroud)