py_shadow_merge · Python

▶ Aprender py_shadow_merge (Python) paso a paso · explicación de py_shadow_merge

Código línea a línea

Tres columnas: el código, el trozo del subject o del main que obliga a escribir esa línea, y el por qué.

py_shadow_merge.py
CódigoSubjectPor qué
def shadow_merge(list1: list[int], list2: list[int]) -> list[int]:def shadow_merge(list1: list[int], list2: list[int]) -> list[int]:Firma del subject.
merged = []into one sorted listLista nueva: no toco las de entrada.
i = j = 0Un puntero por lista.
while i < len(list1) and j < len(list2):merges two sorted listsMientras queden elementos en las dos, comparo cabezas.
if list2[j] < list1[i]:La de la segunda es menor: va ella.
merged.append(list2[j])La añado.
j += 1Avanzo su puntero.
else:Menor o igual: la primera. En empate sale antes la de list1, da igual para enteros pero es la convención estable.
merged.append(list1[i])La añado.
i += 1Avanzo.
merged.extend(list1[i:])shadow_merge([], [1,2,3]) => [1,2,3]Lo que sobre de una lista ya está ordenado y es mayor que todo lo anterior: va tal cual. Si una lista estaba vacía, el while no entra y esto lo hace todo.
merged.extend(list2[j:])Solo una de las dos tendrá resto.
return mergedOrdenada.