Pythonic способ проверить: все элементы оцениваются в False -OR- все элементы оцениваются в True

Я хочу, чтобы результаты функции были следующими:

  • Все значения оцениваются как False (Нет, 0, пустая строка) -> True
  • Все значения имеют значение True -> True
  • Каждый другой случай -> False

Это моя попытка:

>>> def consistent(x): ... x_filtered = filter(None, x) ... return len(x_filtered) in (0, len(x)) ... >>> consistent((0,1)) False >>> consistent((1,1)) True >>> consistent((0,0)) True 

[Bonus]

Какую функцию следует назвать этой функции?

6 Solutions collect form web for “Pythonic способ проверить: все элементы оцениваются в False -OR- все элементы оцениваются в True”

 def unanimous(it): it1, it2 = itertools.tee(it) return all(it1) or not any(it2) 
 def all_bools_equal(lst): return all(lst) or not any(lst) 

См .: http://docs.python.org/library/functions.html#all

См .: http://docs.python.org/library/functions.html#any

Пиггинг по методу Игнасио Васкеса-Абрама, но остановится после первого несоответствия:

 def unanimous(s): it1, it2 = itertools.tee(iter(s)) it1.next() return not any(bool(a)^bool(b) for a,b in itertools.izip(it1,it2)) 

Хотя использование not reduce(operators.xor, s) было бы проще, он не замыкается.

 def all_equals(xs): x0 = next(iter(xs), False) return all(bool(x) == bool(x0) for x in xs) 

Не так кратко, но ярлыки, не вмешиваясь в «тройник» или что-то в этом роде.

 def unanimous(s): s = iter(s) if s.next(): return all(s) else: return not any(s) 
 def AllTheSame(iterable): return any(iterable) is all(iterable) 
  • разбиение 32-битного числа на отдельные поля
  • Является ли возвращение «Нет» для функции Python когда-либо хорошей идеей?
  • Как использовать символы Unicode с PIL?
  • Python - фигурные скобки в типах подсказок
  • Как передать параметры в RequestHandler?
  • Как удалить строку из файла в python
  • Загрузить модуль из строки в python
  • как использовать python Elasticsearch client upsert api
  • Уровневая система основана на точках
  • python ast.literal_eval и datetime
  • Python: список различных пустых множеств
  •  
    Interesting Posts for Van-Lav

    openpyxl python3 – форматирование целых строк eellicits странное поведение

    В какой ситуации должен использоваться встроенный модуль «operator» в python?

    Многопроцессорность Python занимает гораздо больше времени, чем одиночная обработка

    Для программистов Python есть ли что-то, что эквивалентно CPAN Perl?

    Избегайте глубокого копирования при выполнении BFS

    Запуск сценария Саломы без графики

    Как перебирать маршруты api в другом файле, чем файл инициализации приложения

    Эффективный способ использования функции выполняется только один раз в цикле

    Анализ XML-объекта с помощью python xml.sax

    Разъемы между компьютерами

    Улучшение скорости на больших пандах read_csv с индексом datetime

    Текст в поле ввода очищается при нажатии Tkinter

    Передайте формулу в качестве параметра функции в python

    Вставка двух операций в транзакцию и получение «Невозможно работать с разными группами сущностей в транзакции» Ошибка

    Создайте декоратор, который может видеть текущий метод класса

    Python - лучший язык программирования в мире.