«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как проверить, перекрываются ли элементы из одного списка с другим в Python?

Как проверить, перекрываются ли элементы из одного списка с другим в Python?

Опубликовано 8 ноября 2024 г.
Просматривать:739

How Do I Check if Elements from One List Overlap with Another in Python?

Тестирование перекрытия списков в Python

Введение

В 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 замороженных множеств, чтобы определить, есть ли у них какие-либо общие элементы. Если они этого не делают, результат будет ложным; в противном случае оно истинно.

Сравнение эффективности

Наихудший случай:

  • Генераторное выражение: O(n)
  • Пересечение множеств: O(n m)
  • Пересечение гибридного множества: O(n m)
  • Метод Isdisjoint: O(1)

В большинстве случаев метод isdisjoint метод является самым быстрым, поскольку он использует проверки членства в наборе в постоянное время.

Лучший случай для выражения-генератора:

  • Когда первые несколько элементов списков перекрывать. В этом случае выражение-генератор может быстро вернуть значение True.

Факторы, которые следует учитывать:

  • Размер списка
  • Распределение элементы в списках
  • Частота общих элементов

Рекомендации

  • Для небольших списков (
  • Если структуры списков предсказуемы (например, отсортированы), выражение генератора может работать быстрее.
  • Если между списками существует значительная разница в размерах, используйте метод isdisjoint с меньшим списком в качестве первый аргумент.
  • Для списков с небольшим количеством общих элементов или без них метод isdisjoint обычно более эффективен.
Заявление о выпуске Эта статья воспроизводится: 1729382599 Если есть какие -либо нарушения, пожалуйста, свяжитесь с [email protected], чтобы удалить его.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3