How to apply a logical operator to all elements in a python list

Logical and across all elements in a_list:

all(a_list)

Logical or across all elements in a_list:

any(a_list)

If you feel creative, you can also do:

import operator
def my_all(a_list):
  return reduce(operator.and_, a_list, True)

def my_any(a_list):
  return reduce(operator.or_, a_list, False)

keep in mind that those aren’t evaluated in short circuit, whilst the built-ins are 😉

another funny way:

def my_all_v2(a_list):
  return len(filter(None,a_list)) == len(a_list)

def my_any_v2(a_list):
  return len(filter(None,a_list)) > 0

and yet another:

def my_all_v3(a_list):
  for i in a_list:
    if not i:
      return False
  return True

def my_any_v3(a_list):
  for i in a_list:
    if i:
      return True
  return False

and we could go on all day, but yes, the pythonic way is to use all and any 🙂

By the way, Python has not tail recursion elimination, so don’t try to translate LISP code directly 😉

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)