Вы работаете параллельно range(3)
и range(a)
.
То, что эффективно происходит, так это то, что a
устанавливается на 0
, 1
и, наконец, 2
.
Тогда ваш b
определен для каждого элемента в range(a)
.
Теперь генерируются данные:
a = 0
range(0) # nothing
a = 1
range(1) # (0, )
(1, 0) # first pair of (a, b) for a = 1
a = 2
range(2) # (0, 1)
(2, 0) # first pair of (a, b) for a = 2
(2, 1) # second pair of (a, b) for a = 2
# end
Учитывая вышеизложенное, результат в итоге становится [(1, 0), (2, 0), (2, 1)]