Допустим, list1, ..., list4
имеет длину n1, ..., n4
. Линейное сканирование идентификаторов в списке 3 имеет сложность O (n1 * n3).
Альтернативный подход - создать словарь подстановки из list1 и list2. В этом случае сложностью будет создание словаря + поиск, то есть O (n1) + O (n3).
id2name = dict(zip(list1, list2))
list4 = [id2name[id] for id in list3]
В большинстве случаев (кроме очень коротких списков 3, 0 или 1 длины) будет быстрее, чем линейное сканирование