code: def select_where(self, where_col_list, where_value_list, col_name=''):
          
          res = []        # list of rows to be returned
          col_ids = []    # ids of the columns to check
          #print('select_where  : arr = ',  len(self.arr), 'where_value_list = ',  where_value_list)
          for col_id, col in enumerate(self.header):
              if col in where_col_list:
                  col_ids.append([col_id, col])
          #print('select_where    : col_ids = ',  col_ids)   # correctly prints [[0, 'TERM'], [2, 'ID']]
          
          for row_num, row in enumerate(self.arr):
              keep_this_row = True
              #print('col_ids=', col_ids, ' row = ', row_num, row)
              for ndx, where_col in enumerate(col_ids):
                  #print('type where_value_list[ndx] = ', type(where_value_list[ndx]))
                  #print('type row[where_col[0]] = ', type(row[where_col[0]]))
                  
                  if row[where_col[0]] != where_value_list[ndx]:
                      keep_this_row = False
              if keep_this_row is True:
                  if col_name == '':
                      res.append([row_num, row])
                  else:   # extracting a single column only
                      l_dat = self.get_col_by_name(col_name)
                      if l_dat is not None:
                          res.append(row[l_dat])
          return res
docs: selects rows from the array where col_list == val_list