Не пойму почему делаете так. Можно куда проще.
Можно сгенерировать список квадратов чисел:
squares = [i*i for i in range(1, 5001)]
При этом индекс элемента в списке i всегда будет на один меньше, чем число, чей квадрат находится по индексу i.
Теперь задача переформулируется таким образом: найти все пары чисел из этого списка, сумма которых тоже в этом списке.
for a,a2 in enumerate(squares, 1):
for b,b2 in enumerate(squares[a:], a+1):
if (a2+b2) in squares:
c = squares.index(a2+b2) + 1
print(a,b,c)
Работает не очень быстро, но работает.
EDIT: можно резко ускорить код, если учесть следующее: нам не обязательно искать сумму во всем списке. Мы знаем, что сумма будет больше чем b^2, т.е. будет иметь индекс больше чем b. Также мы знаем, что a^2 + b^2 < (a+b)^2, т.е. сумма будет иметь индекс меньше чем a+b. Отсюда:
for a,a2 in enumerate(squares, 1):
for b,b2 in enumerate(squares[a:], a+1):
if (a2+b2) in squares[b+1:a+b]:
c = squares.index(a2+b2) + 1
print(a,b,c)