Подтвердить что ты не робот

Все значения списка одинаковы

В Python это простой способ проверить, что все значения в списке равны друг другу?

4b9b3361

Ответ 1

На ум приходит много способов. Вы можете повернуть его в set (который отфильтровывает дубликаты) и проверять длину одного Изменить: как отметил другой плакат, это работает только с типами хеширования; Я отменяю это предложение, поскольку он имеет худшую производительность и менее общий.

Вы можете использовать выражение генератора: all(items[0] == item for item in items), которое будет короткозамкнуто (т.е. вернет false, как только предикат завершится с ошибкой для элемента, а не для продолжения).

Ответ 2

>>> a = [1, 1, 1, 1]
>>> len(set(a))
1

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

Ответ 3

>>> l = [1, 1, 1, 1]
>>> all(map(lambda x: x == l[0], l))
True

Ответ 4

Использование set, как указано Грегом Хьюджиллом, - отличное решение. Здесь еще один, который более ленив, поэтому, если одна пара элементов не равна, остальные не будут сравниваться. Это может быть медленнее, чем решение set при сравнении всех элементов, но не сравнило его.

l = [1, 1, 1]
all(l[i] == l[i+1] for i in range(len(l)-1))

Обратите внимание на специальный случай all([]) == True.