Как насчет того, чтобы выделить процессы? Сделайте чтение и заполните список целых чисел содержимым файла. Затем выполните обработку для мин / макс и затем усредните.
Изоляция проблем поможет вам сосредоточиться на них. Мне нравится называть это шумоподавлением. Как подрядчик, я работаю над большим количеством грязного кода, и одна из причин, по которым их трудно понять, заключается в том, что в то же время происходит слишком много работы. Если вы упростите то, что происходит, код почти сам напишет. Это также называется разделением интересов. Это очень важный принцип программирования.
После того, как вы изолировали проблемы и получили работающий код, вы можете попытаться снова собрать все это вместе, чтобы процесс стал более эффективным (если вы сделаете это inline с чтением файла, то вы будете держать только одну строку в памяти одновременно).