В Python определение наличия элементов из одного списка в другом важно для различных задач манипулирования данными. В этой статье рассматриваются различные методы проверки такого совпадения, оценки их эффективности и предоставления передового опыта.
1. Генераторное выражение
any(i in a for i in b)
Этот метод перебирает один список и проверяет членство в другом, возвращая True, если совпадение есть найденный. Его временная сложность равна O(n), где n — длина большего списка.
2. Set Intersection
bool(set(a) & set(b))
Этот подход преобразует оба списка в множества и находит их пересечение. Если пересечение непусто, оно возвращает True. Наихудшая временная сложность для этого равна O(n m), где n и m — длины списков.
3. Пересечение гибридного набора
a = set(a)
any(i in a for i in b)
Этот метод преобразует только один список в набор и перебирает другой, проверяя членство в наборе. Он позволяет избежать создания промежуточных наборов, что делает его более быстрым, чем традиционное пересечение наборов.
4. Метод Isdisjoint
not set(a).isdisjoint(b)
Этот подход использует метод isdisjoint замороженных множеств, чтобы определить, есть ли у них какие-либо общие элементы. Если они этого не делают, результат будет ложным; в противном случае оно истинно.
Наихудший случай:
В большинстве случаев метод isdisjoint метод является самым быстрым, поскольку он использует проверки членства в наборе в постоянное время.
Лучший случай для выражения-генератора:
Факторы, которые следует учитывать:
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3