Not sure about the "for c" loop; c indexes two different cases, and arguments and functions change with each case as well.  Obviously one could implement this with something like 

  for c,f,args in ((-1, weibull_max, [0,-1]), (1, frechet, [0, 1])):

but is this complexity worthwhile for handling two cases?