У меня есть несколько списков, каждый из которых содержит несколько городов. Мне нужно проверить любые два случайных элемента, если они принадлежат к одному списку.
Простой пример:
list1 = ['London', 'Manchester', 'Liverpool', 'Edimburgh']
list2 = ['Dublin', 'Cork', 'Galway']
list3 = ['Berlin', 'Munich', 'Frankfurt', 'Paris', 'Milan', 'Rome', 'Madrid', 'Barcelona', 'Lisbon', ...]
list4 = ['Washington', 'New York', 'San Francisco', 'LA', 'Boston', ...]
Ожидаемые результаты:
> in_same_group('London', 'Liverpool')
> True
>
> in_same_group('Berlin', 'Washington')
> False
Функция вызывается очень часто, поэтому скорость критическая. Самый большой список может содержать до 1000 элементов.
Каким будет наиболее эффективный способ сделать это?
Это то, что я пробовал до сих пор, но он слишком медленный:
def in_same_group(city1, city2):
same_group = False
for this_list in [list1, list2, list3...]:
if city1 in this_list and city2 in this_list:
return True
return same_group