Быстрый и грязный подход:
l1 = ['H', 'o', 'u', 's', 'e']
l2 = ['H', 'o', 's']
l2, l1 = sorted((l1, l2), key=len)
l = len(l1)
j = 0
res = []
for i in range(l):
try:
if l1[i]==l2[j]:
res.append(l1[i])
j += 1
else:
res.append(None)
except IndexError:
res.extend([None] * (l-j))
break
print(res) # -> ['H', 'o', None, 's', None]
Обратите внимание, что необходимы пояснения! (см. комментарий @ yatu)
Также обратите внимание, что я изменил ваш '0'
на None
. Использование '0'
является плохой идеей, поскольку, по крайней мере в теории, ваши два начальных списка могут содержать это, и вы не сможете различить совпадение и несоответствие.
Я определенно с нетерпением жду более элегантного подхода к этой интересной проблеме!