Проверить уникальность элементов списка (Python)

Тема: 
Списки, кортежи

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

Решить данную задачу на языке Python можно несколькими способами. "Классический" вариант - брать по очереди элементы списка и сравнить каждый со стоящими за ним. При первом же совпадении элементов делается вывод, что в списке есть одинаковы элементы и работа программы завершается.

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

Допустим исходный список генерируется таким кодом:

from random import random
N = 10 
arr = [0] * N
for i in range(N):
    arr[i] = int(random() * 50)
print(arr)

Пример решения классическим способом:

for i in range(N-1):
    for j in range(i+1,N):
        if arr[i] == arr[j]:
            print("Есть одинаковые")
            quit()
print("Все элементы уникальны")

Здесь j принимает значения от следующего элемента за тем, для которого ищется совпадение, до последнего в списке. Сравнивать элемент с индексом i с элементами, стоящими впереди него, не надо, т.к. эти сравнения уже выполнялись на предыдущих итерациях внешнего цикла.

Решение задачи с помощью использования множеств:

setarr = set(arr)
if len(arr) == len(setarr):
    print("Все элементы уникальны")
else:
    print("Есть одинаковые")

Функция set() преобразует список в множество.

Примеры выполнения кода:

pl@pl-desktop ~ $ python3 uniqueness.py 
[2, 4, 1, 2, 45, 38, 26, 11, 49, 25]
Есть одинаковые
pl@pl-desktop ~ $ python3 uniqueness.py 
[44, 49, 21, 19, 23, 27, 34, 9, 41, 31]
Все элементы уникальны

Простая проверка на вхождение элементов одного списка в другой

list_1 = [21, 4, 1, 2, 45, 38, 26, 11, 49, 25]
list_2 = [44, 49, 21, 19, 23, 27, 34, 9, 41, 31]
 
# list_result накопит элементы входящие в оба списка:
list_result = [i for i in list_1 if i in list_2]
 
print('Ответ:',list_result)
# >> Ответ: [21, 49]