range() генерирует ряд чисел, НЕ ВКЛЮЧАЯ 5. Конструкции if отфильтровывают элементы на каждой итерации. Вот эквивалентный код на основе операторов:res == []
for х in range(5) :
if x % 2 == 0:
for у in range(5) :
if у % 2 == 1:
res.append(x, y)
res # [(0, 1), (0, 3), (2, 1), (2, 3), (4, 1), (4, 3)]