Как проверить, все ли элементы одинаковы в списке?
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