Рубрики
Без рубрики

Python уникальный список – как получить все уникальные значения в списке или массива

Автор оригинала: Amy Haddad.

Скажем, у вас есть список, содержащий дубликаты номеров:

numbers = [1, 1, 2, 3, 3, 4]

Но вы хотите список Уникальный числа.

unique_numbers = [1, 2, 3, 4]

Есть несколько способов получить список уникальных значений в Python. Эта статья покажет вам, как.

Используя Установить один способ пойти об этом. Комплект полезен, потому что он содержит уникальные элементы.

Вы можете использовать набор, чтобы получить уникальные элементы. Затем включите набор в список.

Давайте посмотрим на два подхода, которые используют набор и список. Первый подход – это многолетний, но полезно посмотреть, что происходит каждый шаг пути.

numbers = [1, 2, 2, 3, 3, 4, 5]


def get_unique_numbers(numbers):

    list_of_unique_numbers = []

    unique_numbers = set(numbers)

    for number in unique_numbers:
        list_of_unique_numbers.append(number)

    return list_of_unique_numbers


print(get_unique_numbers(numbers))
# result: [1, 2, 3, 4, 5]

Давайте посмотрим, что происходит. Мне дают список чисел, Числа Отказ Я передаю этот список в функцию, get_unique_numbers Отказ

Внутри функции я создаю пустой список, который в конечном итоге удержит все уникальные числа. Тогда я использую Установить Чтобы получить уникальные числа из Числа список.

unique_numbers = set(numbers)

У меня есть то, что мне нужно: уникальные числа. Теперь мне нужно получить эти значения в список. Для этого я использую цикл для итерации через каждый номер в наборе.

for number in unique_numbers:
       list_of_unique_numbers.append(number)

На каждой итерации я добавляю текущий номер в список, list_of_unique_numbers Отказ Наконец, я возвращаю этот список в конце программы.

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

Более короткий подход с набором

Весь код, написанный в приведенном выше примере, может быть конденсирован в одну строку с помощью встроенных функций Python.

numbers = [1, 2, 2, 3, 3, 4, 5]
unique_numbers = list(set(numbers))
print(unique_numbers)
# Result: [1, 2, 3, 4, 5]

Хотя этот код выглядит очень отличается от первого примера, идея одинакова. Используйте набор, чтобы получить уникальные числа. Затем включите набор в список.

unique_numbers = list(set(numbers))

Это полезно думать «наизнанку» при чтении вышеуказанного кода. Самый внутренний код оценивается первым: Установить (цифры) Отказ Затем вышеупомянутый код оценивается: Список (набор (номера)) Отказ

Итерация – еще один подход для рассмотрения.

Основная идея состоит в том, чтобы создать пустой список, который удерживает уникальные числа. Затем используйте A для цикла итерации по каждому номеру в данном списке. Если число уже находится в уникальном списке, то продолжайте следующую итерацию. В противном случае добавьте его к нему.

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

numbers = [20, 20, 30, 30, 40]


def get_unique_numbers(numbers):
    unique = []

    for number in numbers:
        if number in unique:
            continue
        else:
            unique.append(number)
    return unique


print(get_unique_numbers(numbers))
# Result: [20, 30, 40]

Вот что происходит каждый шаг пути. Во-первых, мне дают список чисел, Числа Отказ Я передаю этот список в мою функцию, get_unique_numbers Отказ

Внутри функции я создаю пустой список, Уникальный Отказ В конце концов, этот список проведет все уникальные числа.

Я использую цикл для итерации, чтобы повторить каждый номер в Числа список.

 for number in numbers:
       if number in unique:
           continue
       else:
           unique.append(number)

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

Вот важный момент: добавляются только уникальные числа. Как только цикл завершен, я возвращаюсь Уникальный который содержит все уникальные числа.

Более короткий подход к итерации

Есть еще один способ написать функцию в меньшем количестве строк.

numbers = [20, 20, 30, 30, 40]


def get_unique_numbers(numbers):
    unique = []
    for number in numbers:
        if number not in unique:
            unique.append(number)
    return unique
#Result: [20, 30, 40]

Разница в условном. На этот раз он установлен, чтобы прочитать так: если номер не в Уникальный Затем добавьте его.

if number not in unique:
    unique.append(number)

В противном случае цикл переместится на следующий номер в списке, Числа Отказ

Результат такой же. Тем не менее, иногда труднее подумать и читать код, когда лоана отрицается.

Есть и другие способы найти уникальные значения в списке Python. Но вы, вероятно, окажетесь до одной из подходов, покрытых в этой статье.

Я пишу о том, чтобы учиться программировать, и лучшие способы идти об этом на amymhaddad.com Отказ Подпишись на меня в Твиттере: @amymhaddad. .