def varying_between(table, idvarlist):
 def inst_key(inst, vars):
  return tuple((str(inst[var]) for var in vars))
 excluded = set(idvarlist)
 all_possible = [var for var in (table.domain.variables + table.domain.metas) if (var not in excluded)]
 candidate_set = set(all_possible)
 idmap = group_table_indices(table, idvarlist)
 values = {}
 varying = set()
 for indices in idmap.values():
  subset = table[indices]
  for var in list(candidate_set):
   values = subset[:, var]
   (values, _) = subset.get_column_view(var)
   if var.is_string:
    uniq = set(values)
   else:
    uniq = unique_non_nan(values)
   if (len(uniq) > 1):
    varying.add(var)
    candidate_set.remove(var)
 return sorted(varying, key=all_possible.index)

def varying_between ( table , idvarlist ) : def inst_key ( inst , vars ) : return tuple ( ( str ( inst [ var ] ) for var in vars ) ) excluded = set ( idvarlist ) all_possible = [ var for var in ( table . domain . variables + table . domain . metas ) if ( var not in excluded ) ] candidate_set = set ( all_possible ) idmap = group_table_indices ( table , idvarlist ) values = { } varying = set ( ) for indices in idmap . values ( ) : subset = table [ indices ] for var in list ( candidate_set ) : values = subset [ : , var ] ( values , _ ) = subset . get_column_view ( var ) if var . is_string : uniq = set ( values ) else : uniq = unique_non_nan ( values ) if ( len ( uniq ) > 1 ) : varying . add ( var ) candidate_set . remove ( var ) return sorted ( varying , key = all_possible . index )
return a list of all variables with non constant values between groups defined by idvarlist .