Sobes.tech
Back to questions
Junior
104
questionbank

Как бы вы сделали все значения списка уникальными?

Answer from AI

sobes.tech AI

Использовав множество set, которое по своей природе хранит только уникальные элементы.

# Исходный список с дубликатами
my_list = [1, 2, 2, 3, 4, 4, 5]

# Преобразование списка в множество для удаления дубликатов
unique_elements_set = set(my_list)

# Преобразование множества обратно в список (если требуется)
unique_list = list(unique_elements_set)

print(unique_list) # Вывод: [1, 2, 3, 4, 5] (порядок может отличаться)

Также можно использовать генератор списков с проверкой на вхождение, сохраняя исходный порядок:

# Исходный список с дубликатами
my_list = [1, 2, 2, 3, 4, 4, 5]

# Создание пустого списка для уникальных элементов
unique_list_ordered = []

# Итерирование по исходному списку
for item in my_list:
    # Проверка, есть ли элемент уже в списке уникальных
    if item not in unique_list_ordered:
        # Если нет, добавляем его
        unique_list_ordered.append(item)

print(unique_list_ordered) # Вывод: [1, 2, 3, 4, 5] (порядок сохранен)

Для более эффективного сохранения порядка при больших списках можно использовать dict.fromkeys (начиная с Python 3.7, порядок в словарях сохраняется):

# Исходный список с дубликатами
my_list = [1, 2, 2, 3, 4, 4, 5]

# Использование dict.fromkeys для создания словаря с уникальными ключами
# и последующее преобразование ключей в список
unique_list_ordered_efficient = list(dict.fromkeys(my_list))

print(unique_list_ordered_efficient) # Вывод: [1, 2, 3, 4, 5] (порядок сохранен)

Выбор метода зависит от необходимости сохранить исходный порядок элементов. set наиболее лаконичен и эффективен для удаления дубликатов, но не гарантирует порядок. Методы с итерацией и dict.fromkeys сохраняют порядок.