Здесь мы обсудим все 6 методов объединения двух списков без дубликатов в Python. Начнем с первого метода использования функции set().

Содержание

Метод 1: с помощью set()

Один из распространенных способов объединить два списка с дубликатами в Python — выполнить следующие шаги:

  • Сначала объединим все элементы списка в один список
  • Затем преобразуйте список со всеми элементами в набор с помощью функции set().
  • Набор будет содержать только уникальные значения и удалит из него все дубликаты.
  • В последнем случае преобразуйте набор обратно в список с помощью функции list().

Вот пример такого подхода в Python.

# Defining two lists with dupliactes
day1_attendees = ["Alice", "Bob", "Charlie", "David"]
day2_attendees = ["Charlie", "David", "Emily", "Frank"]

# Merging lists together
all_attendees = day1_attendees + day2_attendees

# Printing merged list
print("Complete list:", all_attendees)

# Removing duplicates
unique_attendees = list(set(all_attendees))

# Printing merged list without duplicates
print("List without duplicates:", unique_attendees)

Выполнив вышеуказанную программу Python, мы получим следующий результат.

Complete list: ['Alice', 'Bob', 'Charlie', 'David', 'Charlie', 'David', 'Emily', 'Frank']
List without duplicates: ['Alice', 'Charlie', 'Emily', 'David', 'Frank', 'Bob']

Метод 2: с помощью extensions()

Другой способ объединить два списка без дубликатов в Python — использовать метод extensions().

Как и в методе add(), мы передаем только одно значение, которое нужно добавить к последнему из списка. Точно так же метод extensions() позволяет вставлять элементы в последний элемент списка. Однако метод extensions() принимает итерацию вместо одного значения.

Итак, в методе extensions() мы будем использовать цикл for и оператор if, чтобы вставлять в список только уникальные значения без каких-либо дубликатов.

Пример:

# Defining two lists with dupliactes
emp_1 = ["Alice", "Bob", "Charlie", "David"]
emp_2 = ["Charlie", "David", "Alice", "Frank"]

# Creating a copy
merged_list = list(emp_1)

# Using extend() method
merged_list.extend(y for y in emp_2 if y not in merged_list)

# Printing merged list without duplicates
print("List without duplicates:", merged_list)

В приведенном выше примере мы определили 2 списка — emp_1 и emp_2. После этого мы создали копию первого списка с именем merged_list. Затем использовал метод расширения() с циклом и оператором if в merged_list.

Таким образом, мы получим объединенный список без дубликатов в Python.

List without duplicates: ['Alice', 'Bob', 'Charlie', 'David', 'Frank']

Метод 3: с помощью оператора or

Еще один быстрый способ объединить два списка без дубликатов — использовать оператор or с функцией set() в Python.

В этом методе мы снова будем использовать функцию set() для преобразования списка в набор и объединения обоих наборов с помощью оператора or. В последнем случае мы преобразуем результат оператора или обратно в список.

# Defining two lists with dupliactes
states_1 = ["California", "Texas", "Florida"]
states_2 = ["Florida", "California", "Georgia", "Washington"]

# Using set() and or operator
unique_states = list(set(states_1) | set(states_2))

# Printing merged list without duplicates
print("List without duplicates:", unique_states)

В приведенном выше примере мы взяли в Python два разных списка, состоящих из повторяющихся значений. После этого мы использовали функцию set() для преобразования этих списков в наборы и использовали оператор или между ними для получения только уникальных значений.

Как только мы выполним вышеуказанную программу, мы получим следующий список без дубликатов.

List without duplicates: ['Texas', 'Washington', 'California', 'Florida', 'Georgia']

Метод 4: используя np.unique()

np.unique() — это функция NumPy в Python, которая возвращает отсортированные уникальные элементы массива.

Итак, в этом методе мы объединим оба списка Python с помощью оператора +. А затем используйте метод np.unique(), чтобы создать массив только из уникальных значений. В последнем случае мы преобразуем этот массив обратно в список, используя функцию list() в Python.

# Importing numpy 
import numpy as np

# Defining two lists with dupliactes
num_1 = [21, 31, 41, 51, 61]
num_2 = [32, 21, 42, 61, 51]

# Using np.unique()
unique_nums = list(np.unique(num_1 + num_2))

# Printing merged list without duplicates
print("List without duplicates:", unique_nums)

В приведенном выше примере мы объединили списки num_1 и num_2 с помощью функций np.unique() и list() в Python.

Результат работы вышеуказанной программы Python показан ниже.

List without duplicates: [21, 31, 32, 41, 42, 51, 61]

Метод 5: используя коллекции

В модуле коллекций у нас есть встроенный класс Counter, который принимает итерацию в качестве входных данных и возвращает словарь, содержащий количество каждого значения. В этом словаре ключ — это уникальное значение, а значение — это количество каждого значения.

Итак, используя его ключи из класса Counter, мы можем объединить два списка без дубликатов. Пример такого подхода приведен ниже.

# Importing Counter
from collections import Counter

# Defining two lists with dupliactes
num_1 = [21, 31, 41, 51, 61]
num_2 = [32, 21, 42, 61, 51]

# Creating a Counter object for each list
counter_num_1 = Counter(num_1)
counter_num_2 = Counter(num_2)

# Add the Counter objects, but only unique records from num_2
combined_counter = counter_num_1 + Counter(ele for ele in counter_num_2 if ele not in counter_num_1)
 
# Convert the Counter object to list
final_list = list(combined_counter.elements())
 
# Printing merged list without duplicates
print("List without duplicates:", final_list)

В приведенном выше примере мы использовали класс Counter из модуля коллекций и создали объект Counter, используя каждый список. После этого мы объединили оба объекта Counter, используя цикл for и оператор if.

В конце концов, как только мы получим объект Counter со всеми уникальными значениями, мы преобразуем объект Counter обратно в список.

Результат приведенного выше примера показан ниже.

List without duplicates: [21, 31, 41, 51, 61, 32, 42]

Метод 6: с помощью цикла и add()

  • В этом методе мы просто будем использовать цикл for для перебора каждого элемента в одном списке.
  • После этого мы будем использовать оператор if, чтобы проверить, существует ли элемент, указанный в одном списке, в другом или нет.
  • В последнем случае мы будем использовать метод add() для добавления уникального элемента списка из одного списка в другой. В результате будет сформирован единый список со всеми уникальными значениями.

Пример такого подхода приведен ниже.

# Defining two lists with dupliactes
num_1 = [21, 31, 41, 51, 61]
num_2 = [32, 21, 42, 61, 51]

# Creating a copy
merged_list = list(num_1)


# Uisng for loop and append()
for element in num_2:
    if element not in merged_list:
        merged_list.append(element)
      

# Printing merged list without duplicates
print("List without duplicates:", merged_list)

Выполнив вышеуказанную программу Python, мы получим следующий результат.

Python объединяет два списка без дубликатов

Добавить комментарий