code: def difference(*sets, **kwargs):
      
      head, tail = sets[0], sets[1:]
      idx = as_index(head, **kwargs)
      lhs = idx.unique
      rhs = [intersection(idx, s, **kwargs) for s in tail]
      return exclusive(lhs, *rhs, axis=0, assume_unique=True)
docs: subtracts all tail sets from the head set
  
      Parameters
      ----------
      sets : tuple of indexable objects
          first set is the head, from which we subtract
          other items form the tail, which are subtracted from head
  
      Returns
      -------
      items which are in the head but not in any of the tail sets
  
      Notes
      -----
      alt implementation: compute union of tail, then union with head, then use set_count(1)