Splits a list by the callable *key* where a negative result will cause the
  item to be put in the first list and a positive into the second list.

def split_list_by(lst, key):
  """
  Splits a list by the callable *key* where a negative result will cause the
  item to be put in the first list and a positive into the second list.
  """

  first, second = [], []
  for item in lst:
    if key(item):
      second.append(item)
    else:
      first.append(item)
  return (first, second)