Этот ответ похож на an answer на a similar question, где @jamylak переходит в более подробно о синхронизации результатов по сравнению с другими алгоритмами.
Если вы просто хотите, первый элемент, который соответствует, используйте next
:
>>> a = [1, 2, 3, 4, 5]
>>> b = [14, 17, 9, 3, 8]
>>> next(element for element in a if element in b)
3
Это не слишком эффективно, как он выполняет линейный поиск b
для каждого элемента. Вы можете создать set
из b
, который имеет более высокую производительность подстановок:
>>> b_set = set(b)
>>> next(element for element in a if element in b_set)
Если next
не находит ничего, что вызывает исключение:
>>> a = [4, 5]
>>> next(element for element in a if element in b_set)
Traceback (most recent call last):
StopIteration
Вы можете дать ему по умолчанию, чтобы вернуться вместо этого, например, None
. Однако это меняет синтаксис как параметры функции анализируются и вы должны явно создать выражение генератора:
>>> None is next((element for element in a if element in b_set), None)
True
Возможный дубликат [Общее сравнение элементов между 2 списка] (http://stackoverflow.com/questions/ 2864842/common-elements-compare-between-2-lists) – M4rtini
Вы хотите совпадения или первое совпадение? Ваш пример - первое совпадение. –
Если вы хотите только первый, это будет дубликат этого: http: // stackoverflow.com/questions/16118621/first-common-element-from-two-lists – M4rtini