Python | Різниця між двома списками
У програмуванні Python порівняння двох списків є звичайним завданням із кількома підходами. У цій статті досліджуються різні методи визначення відмінностей між двома списками, покращуються ваші навички роботи зі списками та порівняння даних у Python . Приєднуйтесь до нас у цій проникливій подорожі до різних стратегій розпізнавання відмінностей між списками.
приклад
Input: list1 = [10, 15, 20, 25, 30, 35, 40] list2 = [25, 40, 35] Output: [10, 15, 20, 30] Explanation: resultant list = list1 - list2
Примітка: Якщо у вас є кілька однакових елементів, це не спрацює. У цьому випадку цей код просто видалить ті самі елементи.
У цьому випадку ви можете підтримувати кількість кожного елемента в обох списках.
Способи порівняння двох списків у Python
Існують різні способи порівняння двох списків у Python. Тут ми обговорюємо деякі загальновживані методи порівняння двох списків у Python, наведені нижче.
- Використання в методі
- Використання розуміння списку
- використання встановити() функція
- використання Numpy
- Використання zip() функція
- Підрахувати випадки за допомогою Лічильник
Python у ключовому слові для порівняння двох списків у Python
У цьому прикладі код повторює елементи в списку 'li1' і додає кожен елемент до 'temp3', якщо його немає в списку 'li2'. Кінцевий результат у `temp3` містить елементи з `li1`, яких немає в `li2`.
Python3
li1> => [> 10> ,> 15> ,> 20> ,> 25> ,> 30> ,> 35> ,> 40> ]> li2> => [> 25> ,> 40> ,> 35> ]> temp3> => []> for> element> in> li1:> > if> element> not> in> li2:> > temp3.append(element)> print> (temp3)> |
Вихід
[10, 15, 20, 30]
Різниця між двома списками в Python за допомогою розуміння списку
У цьому прикладі код створює набір «s» з елементів списку «li2», а потім генерує новий список «temp3», що містить елементи зі списку «li1», яких немає в наборі «s». Нарешті, він друкує елементи в «temp3».
Python3
li1> => [> 10> ,> 15> ,> 20> ,> 25> ,> 30> ,> 35> ,> 40> ]> li2> => [> 25> ,> 40> ,> 35> ]> s> => set> (li2)> temp3> => [x> for> x> in> li1> if> x> not> in> s]> print> (temp3)> |
Вихід
[10, 15, 20, 30]
Знайдіть різницю між двома списками в Python за допомогою set()
У цьому методі ми явно перетворюємо списки на набори, а потім просто зменшуємо один від іншого за допомогою оператора віднімання. Для отримання додаткової інформації відвідайте сайт Набори на Python . Це подібна техніка, яку ми використовували раніше. Єдина відмінність полягає в тому, що ми замінили вкладені цикли на розуміння списку синтаксис.
Python3
li1> => [> 10> ,> 15> ,> 20> ,> 25> ,> 30> ,> 35> ,> 40> ]> li2> => [> 25> ,> 40> ,> 35> ]> s> => set> (li2)> temp3> => [x> for> x> in> li1> if> x> not> in> s]> print> (temp3)> |
Вихід
[10, 15, 20, 30]
Використовуйте Numpy для Порівняйте два списки в Python
The numpy.concatenate() функція об’єднує послідовність масивів уздовж існуючої осі. У цьому прикладі код використовує NumPy для створення масивів «li1» і «li2», знаходить встановлені відмінності між ними («dif1» і «dif2») і об’єднує ці відмінності в єдиний список («temp3»), нарешті друкуючи результат.
Python3
import> numpy as np> li1> => np.array([> 10> ,> 15> ,> 20> ,> 25> ,> 30> ,> 35> ,> 40> ])> li2> => np.array([> 25> ,> 40> ,> 35> ])> dif1> => np.setdiff1d(li1, li2)> dif2> => np.setdiff1d(li2, li1)> temp3> => np.concatenate((dif1, dif2))> print> (> list> (temp3))> |
Вихід
[10, 15, 20, 30]
Порівняйте два списки в Python за допомогою функції zip().
У цьому прикладі код порівнює відповідні елементи двох списків, li1 і li2, і створює список логічних значень, що вказує, чи елементи рівні. Функція `all` перевіряє, чи всі елементи в списку результатів мають значення True.
Python3
li1> => [> 10> ,> 15> ,> 20> ]> li2> => [> 25> ,> 40> ,> 35> ]> result> => [a> => => b> for> a, b> in> zip> (li1, li2)]> print> (> all> (result))> |
Вихід
False
Порівняйте два списки за допомогою підрахунку випадків за допомогою лічильника
У цьому прикладі код використовує клас `Counter` з модуля `collections` для створення лічильників частоти для двох списків, `li1` і `li2`. Потім він порівнює лічильники, щоб перевірити, чи містять списки однакові елементи з однаковими частотами, призначаючи результат `are_lists_equal`.
Python3
from> collections> import> Counter> li1> => [> 10> ,> 15> ,> 20> ,> 25> ,> 30> ,> 35> ,> 40> ]> li2> => [> 25> ,> 40> ,> 35> ]> counter1> => Counter(li1)> counter2> => Counter(li2)> are_lists_equal> => counter1> => => counter2> print> (are_lists_equal)> |
Вихід
False