Я думаю, что есть два разных способа ответить на ваш вопрос.
Во-первых, касаясь только решения проблем, я бы сказал, что ваш вариант использования do...while
l oop является искусственным, и, возможно, происходит от какого-то другого языка, который использует этот вид запутанного мышления. В Python я бы использовал:
z = calc_z_for_first_pass()
for x,y in zip(x_list, y_list)
foo(x,y,z)
z = calc_z_for_subsequent_passes()
Во-вторых, действительно есть случаи, когда вы хотели бы иметь do...while
l oop, например что-то вроде:
do:
z = calc_z()
while not is_valid(z)
В этом случае вам нужно вручную эмулировать свой собственный do...while
l oop (см. [ Эмулировать do-while l oop в Python? , как предложено Ольвином) :
while True:
z = calc_z()
if is_valid(z):
break