В Python это простой способ проверить, что все значения в списке равны друг другу?
Все значения списка одинаковы
Ответ 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
.