<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_col(self, col_name, filter = lambda _ : True):
 """Return all values in the column corresponding to col_name that satisfies filter, which is a function that takes in a value of the column's type and returns True or False Parameters col_name : str Name of desired column filter : function, optional A function that takes in a value of the column's type and returns True or False Defaults to a function that always returns True Returns ------- list A list of values in the desired columns by order of their storage in the model Raises ------ ValueError If the desired column name is not found in the model """

        if col_name not in self._headers:
            raise ValueError("{} not found! Model has headers: {}".format(col_name, self._headers))
        col = []
        for i in range(self.num_rows):
            row = self._table[i + 1]
            val = row[col_name]
            if filter(val):
                col.append(val)

        return col