Как найти уникальное число в массиве python

Предположим, есть список, который содержит повторяющиеся числа:

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

Но нужен список с уникальными числами:

numbers = [1, 2, 3, 4]

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

Вариант №1. Использование множества (set) для получения элементов

Использование множества (set) — один из вариантов. Он удобен тем, что включает только уникальные элементы. После этого множество можно обратно превратить в список.

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


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))

Разберем, что происходит на каждом этапе. Есть список чисел numbers. Передаем его в функцию get_unique_numbers.

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


unique_numbers = set(numbers)

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


for number in unique_numbers:
list_of_unique_numbers.append(number)

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

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

Короткий вариант с set

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


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

Хотя этот код сильно отличается от первого примера, идея та же. Сперва множество используется для получения уникальных значений. После этого множество превращается в список.


unique_numbers = list(set(numbers))

Проще всего думать «изнутри наружу» при чтении этого кода. Самый вложенный код выполняется первым: set(numbers). Затем — внешний блок: list(set(numbers)).

Вариант №2. Использование цикла for

Также стоит рассмотреть подход с использованием цикла.

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

Рассмотрим два способа использования цикла. Начнем с более подробного.


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))

Вот что происходит на каждом этапе. Сначала есть список чисел numbers. Он передается в функцию get_unique_numbers.

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

Цикл будет использоваться для перебора по числам в списке numbers.


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

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

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

Короткий способ с циклом

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


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

Разница в условной конструкции. В этот раз она следующая — если числа нет в unique, то его нужно добавить.


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

В противном случае цикл перейдет к следующему числу в списке numbers.

Результат будет тот же. Но иногда подобное читать сложнее, когда булево значение опускается.

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

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

Для получения уникальных значений из списка в Python можно использовать любой из следующих способов:

  • Метод set();
  • Использование метода list.append() вместе с циклом for;
  • Использование метода Python numpy.unique().

Содержание

  1. Set() для получения уникальных значений из списка
  2. list.append() и цикл for
  3. numpy.unique() для создания списка с уникальными элементами

Set() для получения уникальных значений из списка

Set хранит в себе одну копию повторяющихся значений. Это свойство можно использовать для получения уникальных значений из списка в Python.

  • Первоначально нам нужно будет преобразовать список ввода в набор с помощью функции set().

Синтаксис:

set(input_list_name)
  • Когда список преобразуется в набор, в него помещается только одна копия всех повторяющихся элементов.
  • Затем нам нужно будет преобразовать набор обратно в список, используя следующую команду:

Синтаксис:

list(set-name)
  • Наконец, распечатайте новый список. Пример:
list_inp = [100, 75, 100, 20, 75, 12, 75, 25] 

set_res = set(list_inp) 
print("The unique elements of the input list using set():n") 
list_res = (list(set_res))
 
for item in list_res: 
    print(item) 

Вывод:

The unique elements of the input list using set():

25
75
100
20
12

list.append() и цикл for

Чтобы найти уникальные элементы, мы можем применить цикл Python for вместе с функцией list.append(), чтобы добиться того же:

  • Сначала мы создаем новый (пустой) список, т.е. res_list.
  • После этого, используя цикл for, мы проверяем наличие определенного элемента в новом созданном списке (res_list). Если элемент отсутствует, он добавляется в новый список с помощью метода append().

Синтаксис:

list.append(value)

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

Пример:

list_inp = [100, 75, 100, 20, 75, 12, 75, 25] 

res_list = []

for item in list_inp: 
    if item not in res_list: 
        res_list.append(item) 

print("Unique elements of the list using append():n")    
for item in res_list: 
    print(item) 
      

Вывод:

Unique elements of the list using append():

100
75
20
12
25

numpy.unique() для создания списка с уникальными элементами

Модуль NumPy имеет встроенную функцию с именем numpy.unique для извлечения уникальных элементов данных из массива numpy.

Чтобы получить уникальные элементы из списка Python, нам нужно будет преобразовать список в массив NumPy, используя следующую команду.

Синтаксис:

numpy.array(list-name)

Затем мы будем использовать метод numpy.unique() для извлечения уникальных элементов данных из массива numpy и, наконец, распечатаем получившийся список.

Синтаксис:

numpy.unique(numpy-array-name)

Пример:

import numpy as N
list_inp = [100, 75, 100, 20, 75, 12, 75, 25] 

res = N.array(list_inp) 
unique_res = N.unique(res) 
print("Unique elements of the list using numpy.unique():n")
print(unique_res)
      

Вывод:

Unique elements of the list using numpy.unique():

[12  20  25  75 100]

( 9 оценок, среднее 3 из 5 )

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

В этой статье мы рассмотрим три способа получения уникальных значений из списка Python.

  • Способы получения уникальных значений из списка в Python
    • Set()
    • Python list.append() и цикл for
    • Метод numpy.unique() для создания списка с уникальными элементами
  • Заключение

Уникальные значения из списка можно извлечь с помощью:

  • Метода Python set().
  • Метода list.append() вместе с циклом for.
  • Метода numpy.unique().
  • Сначала нужно преобразовать список в набор с помощью функции set().

Синтаксис

Поскольку список преобразуется в набор, в него помещается только одна копия всех элементов.

  • Затем преобразуем набор обратно в список, используя следующую команду:

Синтаксис

  • Выводим новый список.

Пример

list_inp = [100, 75, 100, 20, 75, 12, 75, 25] 
 
set_res = set(list_inp) 
print("The unique elements of the input list using set():n") 
list_res = (list(set_res))
  
for item in list_res: 
    print(item) 

Вывод

The unique elements of the input list using set():
 
25
75
100
20
12

Чтобы найти уникальные элементы, используем цикл for вместе с функцией list.append().

  • Создадим новый список res_list.
  • С помощью цикла for проверяем наличие определенного элемента в созданном списке (res_list). Если элемент отсутствует, он добавляется в новый список с помощью метода append().

Синтаксис

Если во время переборки мы сталкиваемся с элементом, который уже существует в новом списке, то он игнорируется циклом for. Используем оператор if, чтобы проверить, является ли элемент уникальным или копией.

Пример

list_inp = [100, 75, 100, 20, 75, 12, 75, 25] 
 
res_list = []
 
for item in list_inp: 
    if item not in res_list: 
        res_list.append(item) 
 
print("Unique elements of the list using append():n")    
for item in res_list: 
    print(item) 

Вывод

Unique elements of the list using append():
 
100
75
20
12
25

Модуль Python NumPy включает в себя встроенную функцию numpy.unique, предназначенную для извлечения уникальных элементов из массива.

  • Сначала преобразуем список в массив NumPy, используя приведенную ниже команду.

Синтаксис

Далее используем метод numpy.unique() для извлечения уникальных элементов данных из массива numpy.

  • Выводим на экран полученный список.

Синтаксис

numpy.unique(numpy-array-name)

Пример

import numpy as N
list_inp = [100, 75, 100, 20, 75, 12, 75, 25] 
 
res = N.array(list_inp) 
unique_res = N.unique(res) 
print("Unique elements of the list using numpy.unique():n")
print(unique_res)

Вывод

Unique elements of the list using numpy.unique():
 
[12  20  25  75 100]

В этой статье мы рассмотрели три способа извлечения уникальных значений из списка Python.

Время чтения 3 мин.

Функция numpy.unique() в Python находит уникальные элементы массива и возвращает отсортированные уникальные элементы входного массива и, при необходимости, возвращает индексы входного массива, которые дают уникальные значения и восстанавливают входной массив. .

Содержание

  1. Синтаксис
  2. Аргументы
  3. Возвращаемое значение
  4. Пример 1
  5. Пример 2

Синтаксис

numpy.unique(arr, return_index=False, return_inverse=False,

             return_counts=False, axis=None)

Аргументы

Функция np.unique() принимает один обязательный аргумент в качестве параметра и четыре необязательных аргумента:

  1. arr: в этом аргументе передается массив. Из этого массива функция возвращает уникальные элементы. Этот массив является обязательным аргументом для возврата уникальных элементов. Мы не можем вернуть уникальные элементы без массива.
  2. return_index: этот аргумент принимает в качестве параметров только логические значения. Он имеет два логических оператора: True и False. Если значение равно True, функция np.unique() возвращает два значения: уникальный массив и индексы этого уникального элемента. Если False, он возвращает только уникальный массив.
  3. return_inverse: принимает в качестве параметров только логические значения. Имеет два логических оператора: True и False. Если значение равно True, эта функция возвращает два значения: уникальный массив и индексы исходных элементов массива в уникальных элементах массива. А если false, он возвращает только массив.
  4. return_counts: этот аргумент принимает в качестве параметров только логические значения. Также имеет два логических оператора: True и False. Если значение равно True, эта функция возвращает два значения: уникальный массив, а другое — количество каждого уникального элемента в исходном массиве. Если false, он возвращает только массив.
  5. axis: указывает ось, по которой возвращаются уникальные элементы. По умолчанию установлено значение «None».

Возвращаемое значение

Метод возвращает массив. Этот массив состоит из всех уникальных элементов исходного массива. Если return_index, return_inverse или return_counts переданы как True в аргументах, то функция np.unique() возвращает исходный массив, а массив для аргументов передается как True.

Пример 1

# Importing numpy as np

import numpy as np

# Creating an numpy array

arr = np.array([5, 6, 7, 5, 7, 8, 3, 4, 3, 3])

# Finding the unique values using the unique function

res = np.unique(arr)

print(res)

Выход

В эту программу мы импортировали пакет numpy, состоящий из функций для числовых расчетов. На следующем шаге мы создали массив numpy, используя функцию np.array(). Этот созданный массив состоит из повторяющихся значений. Затем мы передали массив в функцию np.unique().

Функция np.unique() возвращает все уникальные элементы массива. Она возвращает все элементы массива только один раз. В этом примере 5 присутствует в двух местах, но функция np.array() возвращает значение только один раз.

Функция np.unique() возвращает уникальные значения в порядке возрастания. Мы передали массив в качестве аргумента функции.

Пример 2

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

# Importing numpy as np

import numpy as np

# Creating an numpy array

arr = np.array([5, 6, 7, 5, 7, 8, 3, 4, 3, 3])

# Finding the unique values using the unique function

uni, index = np.unique(arr, return_index=True)

print(” The unique array is: “, uni, ” and the indices are “, index)

uni, inver = np.unique(arr, return_inverse=True)

print(” The unique array is: “, uni, ” and the inverses are “, inver)

uni, index, inver, count = np.unique(arr, return_index=True,

                                    return_inverse=True, return_counts=True)

print(” The unique array is: “, uni,

      ” and the indices are “, index,

      ” and the inverses are “, inver, ” counts are: “, count)

Выход

The unique array is: [3 4 5 6 7 8] and the indices are [6 7 0 1 2 5]

The unique array is: [3 4 5 6 7 8] and the inverses are [2 3 4 2 4 5 0 1 0 0]

The unique array is: [3 4 5 6 7 8] and the indices are [6 7 0 1 2 5]

          and the inverses are [2 3 4 2 4 5 0 1 0 0] counts are: [3 1 2 1 2 1]

Эта программа передала параметры для return_index, return_inverse и return_counts. Аргумент return_index возвращает индекс уникальных элементов.

В аргументе return_inverse элементы исходного массива сравниваются с уникальным индексом массива. Например, первый элемент исходного массива равен 5. 5 присутствует в 2 индексах уникальных элементов; следовательно, в качестве индекса возвращается 2.

Автор оригинала: Team Python Pool.

Вступление

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

Уникальные элементы-это элементы, которые появляются только один раз в списке .

Предположим, у нас есть список = [1, 2, 3, 2, 3, 5, 1, 6, 1]. Здесь мы видим, что 1 приходит 3 раза, 2 приходит 2 раза, 3 приходит 2 раза, 5 и 6 приходят один раз. Если мы посчитаем уникальные элементы в списке, то их будет всего 5.[1, 2, 3, 5, 6].

Различные методы подсчета уникальных значений

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

1. Python Подсчитывает уникальные значения в списке обычным методом грубой силы

Мы называем этот метод подходом грубой силы . Этот метод не так эффективен, так как в нем больше времени и больше пространства. Этот подход будет принимать пустой список и переменную count, которая будет установлена в 0. мы пройдем от начала до конца и проверим, нет ли этого значения в пустом списке. Затем мы добавим его и увеличим переменную count на 1. Если его нет в пустом списке, то мы не будем его считать, не будем добавлять в пустой список.

# take an input list as lst 
lst = [1, 2, 3, 5, 1, 2, 6, 7] 
print("Input list : ",lst)

#Empty list 
lst1 = [] 

count = 0

# traverse the array 
for i in lst: 
	if i not in lst1: 
		count = count + 1
		lst1.append(i) 

# printing the output 
print("Output list : ",lst1)
print("No. of unique items are:", count) 

Выход:

Input list :  [1, 2, 3, 5, 1, 2, 6, 7]
Output list :  [1, 2, 3, 5, 6, 7]
No. of unique items are: 6

Объяснение:

Здесь, во-первых, мы взяли входной список и напечатали входной список. Во-вторых, мы взяли пустой список и переменную count, которая установлена в 0. В-третьих, мы прошли список с самого начала и проверили, нет ли значения в пустом списке или нет. Если значение отсутствует в пустом списке, мы увеличиваем значение счетчика на 1 и добавляем это значение в пустой список. Если мы обнаруживаем, что элементы присутствуют в списке, мы не добавляем их в пустой список и не увеличиваем значение счетчика на 1. Наконец, мы напечатали пустой список, который теперь содержит уникальные значения и количество списка. Таким образом, мы можем видеть все уникальные элементы в списке.

2. С помощью счетчика

В этом методе мы будем использовать функцию счетчика из библиотеки коллекций. В этом случае мы будем создавать словарь с помощью функции counter (). Ключи будут уникальными элементами, а значения-числом этого уникального элемента. Взяв ключи из словаря, мы создадим список и напечатаем длину списка.

#import Counter from collections
from collections import Counter

#input of list
lst = [1, 2, 3, 1, 2, 5, 3, 4, 3, 6]
print("Input list : ",lst)

lst1 = Counter(lst).keys() 
print("output list : ",lst1)
print("No of unique elements in the list are:", len(lst1)) 

Выход:

Input list :  [1, 2, 3, 1, 2, 5, 3, 4, 3, 6]
output list :  dict_keys([1, 2, 3, 5, 4, 6])
No of unique elements in the list are: 6

Объяснение:

Здесь, во-первых, мы импортировали функцию Counter() из библиотеки коллекций. Во-вторых, мы взяли входной список и напечатали входной список. В-третьих, мы применили счетчик(), неупорядоченную коллекцию, где элементы хранятся как ключи словаря, а их подсчеты хранятся как значения словаря. Из входного списка мы создали новый список, в котором хранятся только те элементы, ключевые значения которых присутствуют один раз. Все эти элементы различны в списке. Наконец, мы напечатали пустой список, который теперь содержит уникальные значения и количество списка. Таким образом, мы можем видеть все уникальные элементы в списке.

3. Python Подсчитывает Уникальные Значения В Списке С помощью набора

В этом методе мы будем использовать встроенный тип данных python, называемый Set. Мы возьмем входные данные в виде списка, а затем преобразуем их в набор. Как мы все знаем, набор не содержит в себе никаких повторяющихся элементов. Он будет содержать только уникальные элементы, и мы выведем длину списка с помощью функции length ().

# Take input list
lst = [2, 3, 5, 2, 4, 3, 1, 5, 2, 1]
print("Input list : ", lst)

lst1 = set(lst)
print("Output list : ",lst1)
print("No of unique elements in the list are:", len(lst1))

Выход:

Input list :  [2, 3, 5, 2, 4, 3, 1, 5, 2, 1]
Output list :  {1, 2, 3, 4, 5}
No of unique elements in the list are: 5

Объяснение:

Здесь, во-первых, мы взяли входной список и напечатали входной список. Во-вторых, мы преобразовали входной список в набор. Set, который является встроенным типом данных в python, содержит только уникальные элементы в нем. В-третьих, мы сохранили все значения в другом списке. Наконец, мы напечатали пустой список, который теперь содержит уникальные значения и количество списка. Таким образом, мы можем видеть все уникальные элементы в списке.

4. С помощью numpy.unique

В этом методе мы импортируем библиотеку numpy с ее псевдонимом np. В библиотеке numpy мы будем использовать функцию numpy.unique (), которая возвращает уникальное значение входного списка. Мы также можем вернуть количество каждого уникального значения, если параметр return count имеет значение True.

#import numpy module
import numpy as np

#input list
lst = [1,2,3,4,2,5,1,2,6,3]
print("Input list : ",lst)

lst1 = np.unique(lst)
print("Output list : ", lst1)
print("No of unique elements in the list are:", len(lst1))

Выход:

Input list :  [1, 2, 3, 4, 2, 5, 1, 2, 6, 3]
Output list :  [1 2 3 4 5 6]
No of unique elements in the list are: 6

Объяснение:

Здесь, во-первых, мы импортировали модуль numpy в качестве псевдонима np. Во-вторых, мы взяли входной список и напечатали входной список. В-третьих, мы применили numpy. unique (), который сохранит только уникальные значения списка и сохранит их в другом списке. Наконец, мы напечатали пустой список, который теперь содержит уникальные значения и количество списка. Таким образом, мы можем видеть все уникальные элементы в списке.

5. Python Подсчитывает Уникальные Значения В Списке С Помощью Функции pandas dict + zip

В этом методе мы будем использовать словарь с комбинацией функций zip для поиска уникальных значений строки путем преобразования их в список.

#input as a string

str="latracalsolutions"
unique = dict(zip(list(str),[list(str).count(i) for i in list(str)]))
print("Dictionary : ",unique)
print("count : ",len(unique))

Выход:

Dictionary :  {'l': 3, 'a': 3, 't': 2, 'r': 1, 'c': 1, 's': 2, 'o': 2, 'u': 1, 'i': 1, 'n': 1}
count :  10

Объяснение:

Здесь во-первых, мы взяли строку как. Во-вторых, мы применили функцию dict внутри того, что мы применили функцию zip, и внутри нее мы преобразовали строку в список и подсчитали ключи и значения, пройдя по списку. В-третьих, мы взяли переменную unique, в которой мы хранили ключи и значения словаря. Наконец, мы напечатали длину словаря с помощью функции length в python.

6. Использование фрейма данных pandas.

В этом методе мы будем импортировать панд в качестве псевдонима pd. мы будем принимать входные данные в кадре данных панд.

import pandas as pd 

df = pd.DataFrame({ 
'Marks' : [65, 65, 64, 
			58, 67, 60, 
			58, 65]}, 
	

Names = ['sid', 'sam', 'Nia', 
			'Jenny', 'virat', 'Lucifer', 
			'Ramu', 'Nikita']) 
 
n = len(pd.unique(df['Marks'])) 

print("No.of.unique values :",n)

Выход:

Объяснение:

Здесь, во-первых, мы импортировали модуль панд с псевдонимом pd. Во – вторых, мы создали фрейм данных с вводом меток и имен. В-третьих, мы создали переменную n, в которой будем хранить значение. Мы применили уникальную функцию в метках в панд, а затем вычислили ее длину с помощью функции длины и сохранили ее в переменной n. Наконец-то мы напечатали результат.

Кроме того, Читайте

  • Numpy Count | Практическое объяснение поиска вхождений
  • 4 Надежных Способа Подсчета Слов в строке в Python
  • 5 Лучших способов найти длину строки Python
  • Использование панд в CSV() с совершенством
  • Сложение матриц в Python | Сложение двух матриц

Вывод

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

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