Пока порядок элементов в выходных данных не имеет значения, вы можете сделать это:
Output = list(map(lambda x: " ".join(set(x)), zip(List1, List2)))
>>> Output
['a', 'd b', 'c']
Логика может быть разбита следующим образом:
1: zip
два списка вместе:
# display the zipped lists:
>>> list(zip(List1, List2))
[('a', 'a'), ('b', 'd'), ('c', 'c')]
2: превратить каждый кортеж в результирующем списке в набор (для получения уникальных значений):
# display the result of calling set on the zipped lists
>>> list(map(set, zip(List1, List2)))
[{'a'}, {'d', 'b'}, {'c'}]
3: объединить членовкаждый набор с join
Output = list(map(lambda x: " ".join(set(x)), zip(List1, List2)))