И тоже, важное замечание - если успех выполнения или невыполнения кода зависит от какой-то угаданной переменной - это плохой код и плохая практика написания.
Потратить пару дней и ознакомься с ними.
И по твоей теме
Можно вот так написать, это ужасное решение и за такое людей забивают велосипедными цепями где нибудь за гаражами, но это хотя бы сделает код стабильным, но не факт
a = ["12.jpg","34.jpeg","54.gig","101.rag","689.png","689.png","689.png","689.png","689.png","689.png",'12.gif','12.png']
a_len = len(a)
counter =0
while counter <a_len:
counter +=1
for x in a:
if x[-1] =="g":
a.remove(x)
print(a)
А правильное решение выглядит вот так и никак иначе
a = [x for x in a if x[-1] != 'g']