Created by [CecilWesterhof]. At a certain point I needed the maximum, minimum and mean of a list. Instead of calculating them one after the other I created a proc that calculates everything in one go. And also length and sum. (But [KPV] pointed out that there is http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/math/statistics.html#10%|%::math::statistics::basic-stats%|%. So I do not need this any-more. This is the proc: ====== proc listNumericStats {thisList} { set length [llength \${thisList}] if {\${length} == 0} { error "List cannot be empty" } set max [lindex \${thisList} 0] set min \${max} set sum 0. foreach element \${thisList} { set sum [expr {\${sum} + \${element}}] if {\${element} < \${min}} { set min \${element} } elseif {\${element} > \${max}} { set max \${element} } } dict set stats length \${length} dict set stats max \${max} dict set stats mean [expr {\${sum} / \${length}}] dict set stats min \${min} dict set stats sum \${sum} return \${stats} } ====== DEC:That sounds over kill to me ====== set aList [ lsort -real \$anotherList] set max [ lindex \$aList end] set min [ lindex \$aList 0] set sum [expr {[join \$aList "+"]}] set len [llength \$aList ] set mean [ expr {\$sum/\$len}] ====== DEC:I would avoid looping over a list at the script level if you can [CecilWesterhof]: With your code you loop two times over the list instead of once. And you need a sort also, which is also not cheap for big lists. So I would think that my implementation is a lot more efficient. But it is mute, because I do not need it any-more thanks to [KPV]. [KPV]: Also checkout http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/math/statistics.html#10%|%::math::statistics::basic-stats%|% <>Numerics