Maneira pitônica de mesclar duas listas sobrepostas, preservando a ordem

Tudo bem, então eu tenho duas listas, como tal:

Eles podem e terão itens sobrepostos, por exemplo,[1, 2, 3, 4, 5], [4, 5, 6, 7].Haveránão itens adicionais na sobreposição, por exemplo, issonão acontecer:[1, 2, 3, 4, 5], [3.5, 4, 5, 6, 7]As listas não são necessariamente ordenadas nem únicas.[9, 1, 1, 8, 7], [8, 6, 7].

Quero mesclar as listas para que o pedido existente seja preservado e para mesclar na última posição válida possível e para que nenhum dado seja perdido. Além disso, a primeira lista pode ser enorme. Meu código de trabalho atual é o seguinte:

master = [1,3,9,8,3,4,5]
addition = [3,4,5,7,8]

def merge(master, addition):
    n = 1
    while n < len(master):
        if master[-n:] == addition[:n]:
            return master + addition[n:]
        n += 1
    return master + addition

O que eu gostaria de saber é - existe uma maneira mais eficiente de fazer isso? Funciona, mas estou um pouco desconfiado disso, porque pode executar grandes tempos de execução no meu aplicativo - estou mesclando grandes listas de strings.

EDIT: Eu esperaria que a mesclagem de [1,3,9,8,3,4,5], [3,4,5,7,8] fosse: [1,3,9,8,3,4,57,8]. Para maior clareza, destaquei a parte sobreposta.

[9, 1, 1, 8, 7], [8, 6, 7] devem mesclar para [9, 1, 1, 8, 7, 8, 6, 7]

questionAnswers(8)

yourAnswerToTheQuestion