Теперь часть, ответственная за поиск решений. Здесь ты активно пользуешься индексами, что-то вытаскиваешь, что-то сравниваешь, индекс меняешь. Для сопровождения, а это часто делаешь не ты, но другие люди, становится очень сложно уследить за логикой кода.
Я бы подумал, как средствами питона выполнить часть работы. По крайней мере, если средствами питона это просто не делается, то лучше разбить блок на функции со значащими именами. Потому как не ясно, что происходит в том или ином участке.