def split_and_prune_lines(lines):
    """Split input lines into tokenized lines, suppressing comment
    (beginning with hash token) or empty lines.

    Tokenization is by whitespace, i.e., with split.

    The tokenized lines are returned as tuples rather than lists to
    support downstream processing.  For instance, structured array
    creation with np.array requires the entries to be tuples.

    Arguments:
       (iterable of str): input lines

    Returns:
       (iterator of tuple of str): split and filtered lines

    """

    def is_active_line(tokens):
        """ Identify nonempty, noncomment line.

        Helper function for file parsing.

        Arguments:
            (list of str): tokenized line

        Returns:
            (bool)
        """
        return bool(tokens) and (tokens[0]!="#")

    tokenized_lines = map(lambda s : tuple(s.split()),lines)
    return filter(is_active_line,tokenized_lines)