Indeed, it was just enough to flip the arguments in the list comprehension on line 3, that is, the new line 3 is
z_data = [f([x1,x2]) for x2=x2_data, x1=x1_data];
and things are fine.
Apparently, I did not fully understand how the list comprehension works (I am not yet fluent with Python either). I did not realize that the order determines which loop is the outer and which loop is inside.
Thanks to this plotting issue I made another step in understanding the basics of the language
Thank you.