Русские Блоги
В python, как извлечь одинаковые или разные элементы в два списка
В python, как извлечь одинаковые или разные элементы в два списка
Два дня назад я был на собеседовании со стажерами, и мне задали такой вопрос: предположим, что есть два списка, в одном списке 1, 2, 3, а в другом — 3, 4, 5. . Как получить разные числа.
Ответ следующий (python3):
Добавьте один, чтобы вынуть тот же номер, как показано ниже:
print ([i for i in list1 if i in list2])
Вышеуказанные выходные данные:
[1, 2, 4, 5]
[3]
Интеллектуальная рекомендация
Реализация JavaScript Hashtable
причина Недавно я смотрю на «Структуру данных и алгоритм — JavaScript», затем перейдите в NPMJS.ORG для поиска, я хочу найти подходящую ссылку на библиотеку и записывать его, я могу исполь.
MySQL общие операции
jdbc Транзакция: транзакция, truncate SQL заявление Transaction 100 000 хранимая процедура mysql msyql> -определить новый терминатор,Пробелов нет mysql>delimiter // mysql> -создание хранимой .
Используйте Ansible для установки и развертывания TiDB
жизненный опыт TiDB — это распределенная база данных. Настраивать и устанавливать службы на нескольких узлах по отдельности довольно сложно. Чтобы упростить работу и облегчить управление, рекомендуетс.
Последняя версия в 2019 году: использование nvm под Windows для переключения между несколькими версиями Node.js.
С использованием различных интерфейсных сред вы можете переключаться между разными версиями в любое время для разработки. Например, развитие 2018 года основано наNode.js 7x версия разработана. Тебе эт.
![]()
Шаблон проектирования — Создать тип — Заводской шаблон
Заводская модель фабрикиPattern Решать проблему: Решен вопрос, какой интерфейс использовать принципСоздайте интерфейс объекта, класс фабрики которого реализуется его подклассом, чтобы процесс создания.
Как я могу сравнить два списка в Python и вернуть совпадения
Я хочу взять два списка и найти значения, которые появляются в обоих.
вернет [5] , например.
16 ответов
Не самый эффективный, но наиболее очевидный способ сделать это:
Если порядок значим, вы можете сделать это со списком таких понятий:
(работает только для списков одинакового размера, что подразумевает значение порядка).
Используйте set.intersection(), он быстрый и читаемый.
Быстрый тест производительности, показывающий решение Lutz, является лучшим:
Это результаты на моей машине:
Очевидно, что любой искусственный тест производительности должен приниматься с зерном соли, но поскольку ответ set().intersection() не менее быстрый, чем другие решения, а также наиболее читаемый, он должен быть стандартным решением для этого общего проблема.
Как сравнить два списка в Python
В этой статье мы разберемся с различными способами сравнения двух списков в Python. Мы часто сталкиваемся с ситуациями, когда нам нужно сравнить значения элементов данных, хранящихся в любой структуре, например, в списке, кортеже, строке и т.д.
Сравнение – это метод проверки элементов данных одного списка на предмет равенства с элементами данных другого списка.
Методы сравнения двух списков
Мы можем использовать любой из следующих методов для сравнения:
- Функции reduce() и map().
- Функция collection.counter().
- sort() вместе с оператором ==.
- set() вместе с оператором ==.
- Функция difference().
1. Функции Python reduce() и map()
Мы можем использовать функцию map() вместе с функцией functools.reduce() для сравнения элементов данных двух списков.
Метод map() принимает в качестве аргументов функцию и итерацию, например список, кортеж, строку и т.д.
Он применяет переданную функцию к каждому элементу итерации, а затем возвращает объект карты, то есть итератор, в качестве результата.
Метод functools.reduce() применяет переданную функцию к каждому элементу итерируемого ввода рекурсивным образом.
Первоначально он применит функцию к первому и второму элементам и вернет результат. Тот же процесс будет продолжаться для каждого из элементов, пока в списке не останется элементов.
Как комбинация, функция map() применяет функцию ввода к каждому элементу, а функция reduce() гарантирует, что она применяет функцию последовательно.
2. Метод Python collection.counter()
Метод collection.counter() можно использовать для эффективного сравнения списков. Функция counter() подсчитывает частоту элементов в списке и сохраняет данные в виде словаря в формате <значение>: <частота>.
Если два списка имеют одинаковый вывод словаря, мы можем сделать вывод, что списки одинаковы.
Примечание. Порядок в списке не влияет на метод counter().
3. Метод Python sort() и оператор ==
Мы можем объединить метод sort() с оператором == для сравнения двух списков.
Метод sort() используется для сортировки входных списков с целью, что если два входных списка равны, то элементы будут находиться в одних и тех же позициях индекса.
Примечание. Порядок в списке не влияет на этот метод, потому что мы будем сортировать списки перед сравнением.
Кроме того, оператор == используется для сравнения списка элемент за элементом.
4. Метод Python set() и оператор ==
Метод set() манипулирует элементами данных итерации до отсортированного набора элементов данных, не принимая во внимание порядок элементов.
Кроме того, оператор == используется для поэлементного сравнения элементов данных списка.
5. Понимание пользовательского списка
Мы можем использовать List в Python для сравнения двух списков.
В приведенном выше коде мы устанавливаем элемент указателя «x» на список l1 и l3. Далее мы проверяем, присутствует ли элемент, на который указывает элемент-указатель, в списках.
Как проверить, являются ли элементы в списке Python в другом
Приходит время во всех наших кодировках, когда нам нужно сравнить списки, чтобы понять, появляются ли элементы в одном списке во втором списке. https://youtu.be/HWJn1IbjdIw В этой статье мы начнем, где мы все начали, используя для петлей, прежде чем перейти к более классическому пониманию списка Python. Затем мы выйдем за пределы этого для использования … Как проверить, если элементы в списке Python также в другом Подробнее »
- Автор записи
Автор оригинала: David Yeoman.
Есть время во всем нашем кодировке жизни, когда нам нужно Сравнить списки Чтобы понять, стоит ли Предметы в одном списке появляются во втором списке.
В этой статье мы начнем, где мы все начали, используя для -Опс, прежде чем перейти к более классическому Python Список понимания . Затем мы выйдем за рамки этого, чтобы использовать встроенные функции Python любой () и все () Прежде чем смотреть на умное использование методов, содержащихся в Установить () тип данных.
К концу этой статьи вы будете создавать код, который не только отвечает на ваши потребности, но также сохраняет читаемость, будучи кратко, быстро и элегантно Pythonic.
Мы также будем немного пойти за пределы того, что указаны ли элементы в одном списке в другом, мы также узнаем простой способ возврата этих дубликатов (или как бонус, вернуть не дублированные элементы списка) для обзор или используйте.
Метод 1: Понимание списка
Таким образом, если бы мы начали в кодировке Python, мы бы использовали для цикла для перебрания с двумя списками и возвращать результат. В примерах, которые мы впервые вернемся к True/False на то, есть ли номер в списке C также в списке A. Затем мы возвращаем фактические числа из списка C, которые находятся в списке A.
Так что это нормально, насколько это идет; Мы ответили на вопрос. Тем не менее, потребовалось шесть строк кода для истинного/ложного запроса и еще одной шести строки кода плюс создание нового списка для определения фактических чисел, которые были общими для обоих списков. Использование понимания списка мы можем улучшить это.
Метод 2: Лямбда
Если вы прочитаете мой блог по поводу использования выражений лямбда, и вы влюбились в них, так как я когда-то сделал, мы могли бы использовать лямбда для этой цели.
Тем не менее, в моем посте на лямбдах выражения я сказал, что они иногда могут заставить код трудно прочитать и при взгляде на вышеуказанный код, столько, сколько он болит меня признать, я не уверен, что выражение лямбда необходимо в этом кейс. Синтаксис точно не откатывается от языка во время чтения, поэтому давайте посмотрим на пару удобных потенциалов в одноиналке, которые возвращают ту же информацию, что и предыдущие методы, но они более лаконичны и читательны. Они здесь.
Таким образом, мы достигли приборного местоположения для посадки для получения списка с краткосрочным, читаемым кодом, но теперь мы должны вводить другую переменную в наше мышление, являясь скоростью исполнения. На небольших списках, таких как те, которые мы использовали здесь какие-либо наказания на скорости разных вариантов функций, незначительны, однако, будьте осторожны, что в большом списке этот метод понимания списка не поставляется со скоростью наказания. Это будет платить, чтобы проверить с таймером во время теста.
Способ 3: Python’s Any () и All () встроенные функции
Чтобы избежать написания длинного кода, Python имеет ряд встроенных функций, которые соответствуют нам необходимости понимать, присутствуют ли элементы в одном списке в другом.
Функция любой () Проверяет, есть ли какие-либо из элементов в списке Правда и возвращает соответствующую Правда Отказ Вот простой пример того, как он работает:
Это просто, так что давайте применим его к нашему списку примеров. Я снова скриншот все списки, чтобы спасти вас от прокрутки. Поэтому, если мы хотим простую версию/ложную реакцию на наш вопрос относительно того, есть ли какие-либо элементы в одном списке в другом, любой () подходит для нашей потребности.
Помните, что lst_b Элементы все в lst_a ; lst_c имеет некоторые из его предметов в lst_a и lst_d не имеет никаких предметов в lst_a Отказ Поэтому возвращение Правда , Правда , Ложь имеет смысл как третий список, lst_d не имеет никаких предметов, дублированных в lst_a.
Проблема с этим методом заключается в том, что он не говорит вам, если все элементы в одном списке в другом, только что некоторые. Если вам нужна эта степень точности, встроенная функция все () могу сделать это для вас.
Таким образом, в этом случае единственный список, который имеет все свои предметы, содержащиеся в lst_a это lst_b С Следовательно, Правда Отказ
Эти две функции любой () и все () полезны, предоставляют читаемый код и краже, но в основном списке понимание ранее, мы также смогли перечислить фактическое Дубликат Предметы. Пока вы могли бы сделать это, используя любой () и все () Дополнительный код, чтобы сделать его работу, просит вопрос о том, почему вы надоели, так что давайте оставим этих двух, чтобы вернуться только Правда или Ложь и обратить наше внимание на некоторые разные подходы.
Способ 4: введение типа и методы набора () ()
Теперь может показаться странным и немного произвольным, чтобы ввести новый тип данных, когда мы работаем со списками, но метод, который я собираюсь показать, является элегантным способом ответить на наш вопрос о том, являются ли предметы в одном списке в другом, и Мы даже вернем ответ как список, чтобы оставаться согласованным с нашим кодом.
Для тех, кто не делает много с наборы они один из четырех питона Встроенный типы данных. Они являются неупорядоченной и неиспользованной коллекцией данных, и они приходят с некоторыми очень умными методами, которые мы можем использовать. Есть 17 методов для использования на наборах, и я сначала познакомим вас с двумя из тех, кого я чувствую, лучше всего подходит. Первый дает нам много так же, как мы сделали, используя любой () а также все () , в то время как второй дает элегантный способ возврата предметов, общих до двух списков.
• issubset () – возвращает ли другой набор этот набор или нет
• Пересечение () – Возвращает набор, то есть пересечение двух других наборов
И вот код, использующий оба метода на каждом из наших трех сравнений списка.
Обратите внимание, что в обоих случаях нам нужно Преобразуйте списки в наборы используя set (lst_a) , set (lst_b) Синтаксис показан, прежде чем разрешить метод пересечения выполнять его работу. Если вы хотите, чтобы ответ был возвращен в виде списка, вам нужно будет преобразовать ответ, используя Список () Команда, как показано. Если это не важно для вас, вы сохраните немного кода и верните набор.
Методы 5-7: три бонусных метода
Во время движения слегка вдали от нашего оригинального вопроса о том, есть ли предметы в одном списке в другом, есть три других метода в SET (), которые могут удовлетворить ваши потребности в составлении сопоставления списка, хотя ответы, которые они возвращают подходят к проблеме с другого угла. Эти:
• Разница () – возвращает набор, содержащий разницу между двумя или более наборами
• iSdisjoint () – возвращает, имеют ли два набора пересечения или нет
• ОСУПЕРСЕТ () – возвращает, содержит ли один набор другой набор или нет
Как вы можете сказать из описания, они эффективно обратный от того, что мы сделали ранее с Пересечение () и issubset () Отказ
Используя нашими примерами кода, Разница () вернется номера в lst_a. Это не в lst_b С c или d в то время как iSdisjoint () вернется Ложь Если есть пересечение и Правда Если нет (что кажется немного контрактвым, пока вы не задумываете на имя метода), а ОСУПЕРСЕТ () проверим ли наши большие lst_a Содержит меньший lst_b С c или D в целом.
Вот пример трех методов, используемых в наших списках.
Рискуют трудоустроить точку, помните, что iSdisjoint () вернется Ложь Если какие-либо элементы в одном списке появляются в другом. Это будет возвращаться только Правда Когда два списка полностью разделяются без каких-либо дублирования.
В итоге
Чтобы обобщить то, что мы охватываем сегодня, мы смотрели на представленный вопрос о том, как лучше всего проверить, есть ли элементы в одном списке в другом.
- Мы начали с базового понимания списка, используя для -лоп, прежде чем проверять, если лямбда выражение было более подходящим. Наконец, мы заключили в однострочное понимание списка, которые вернулись Правда или Ложь О том, был ли элемент каждого списка в другом списке. Мы также использовали однострочное понимание списка для возврата фактических значений дубликатов в виде списка.
- Затем мы изучили встроенные функции Python любой () и все () Что возвращает True или False в зависимости от того, повторяются ли какие-либо элементы в одном списке в другом.
- Наконец, мы представили некоторые из методов, используемых в рамках Установить () тип данных. Использование issubset () Мы смогли вернуть True или False на ли элементы списка дублированы в другом списке и используя Пересечение () Мы вернули значения дублированных предметов.
- Как бонус, мы также представили некоторые другие Установить () Методы, которые позволили нам дальнейшее манипулировать спискими для возврата полезных данных.
Я надеюсь, что примеры, используемые в этой статье, были полезны. Они не единственный способ решить оригинальную проблему, но здесь достаточно примеров, чтобы вы начали свое путешествие со списками. Я настоятельно рекомендую следующие статьи для тех, кто желает глубже в некоторых методах, показанных сегодня.