<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def select_where(self, table, cols, where, return_type=list):
 """ Query certain rows from a table where a particular value is found. cols parameter can be passed as a iterable (list, set, tuple) or a string if only querying a single column. where parameter can be passed as a two or three part tuple. If only two parts are passed the assumed operator is equals(=). :param table: Name of table :param cols: List, tuple or set of columns or string with single column name :param where: WHERE clause, accepts either a two or three part tuple two-part: (where_column, where_value) three-part: (where_column, comparison_operator, where_value) :param return_type: Type, type to return values in :return: Queried rows """

        # Unpack WHERE clause dictionary into tuple
        if isinstance(where, (list, set)):
            # Multiple WHERE clause's (separate with AND)
            clauses = [self._where_clause(clause) for clause in where]
            where_statement = ' AND '.join(clauses)
        else:
            where_statement = self._where_clause(where)

        # Concatenate full statement and execute
        statement = "SELECT {0} FROM {1} WHERE {2}".format(join_cols(cols), wrap(table), where_statement)
        values = self.fetch(statement)
        return self._return_rows(table, cols, values, return_type)