Как проверить, все ли элементы одинаковы в списке?

n = int(input())
sp = []
for _ in range(n):
  sp.append(int(input()))

Как проверить, все ли числа одинаковые в этом списке?


Ответы (4 шт):

Автор решения: Zhihar

например так:

способ 1:

if len(set(sp)) == 1:
    print("ОДИНАКОВЫЕ!!!")

способ 2:

if [i for i in sp if i != sp[0]] == []:
    print("ОДИНАКОВЫЕ!!!")

способ 3 (скорее всего самый быстрый):

if sp.count(sp[0]) == len(sp):
    print("ОДИНАКОВЫЕ!!!")
→ Ссылка
Автор решения: MaxU

Можно воспользоваться встроенной функцией all():

res = all(x == sp[0] for x in sp)
→ Ссылка
Автор решения: Stanislav Volodarskiy

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

def the_same(iterable):
    it = iter(iterable)
    first = next(it, None)
    return all(v == first for v in it)


print(the_same(int(input()) for _ in range(int(input()))))
→ Ссылка
Автор решения: Exe
import numpy as np

a = np.array(['a', 'b', 'b', 'c', 'a'])
u, indices, count = np.unique(a, return_index=True, return_counts=True)
print(u)
# array(['a', 'b', 'c'], dtype='<U1')
print(count)
# array([2, 2, 1], dtype=int64)
print(count[count > 1])  # где значения больше 1 == дубликат
# array([2, 2], dtype=int64)
print(indices)
# array([0, 1, 3])
print(a[indices])
# array(['a', 'b', 'c'], dtype='<U1')
print(len(a) - len(u))
# 2
print(np.sum(count - 1))
# 2
→ Ссылка