if l1[0] == '*':
    return matcher(l1, l2[1:]) or matcher(l1[1:], l2)
if l1[0] == l2[0]:
    return matcher(l1[1:], l2[1:])
else:
    return False
Алгоритм сопоставления 2 списков с подстановочными знаками