I think @DavidPike has the solution for the basic question you asked. However, seeing that you have a Zone3 option, are you able to definitively say you will always have exactly 3 "zones" of data? If it could be variable, you could write the values to a dictionary and then handle the results however you need.
This all assumes that your naming of the zones is related to the first digit of the field values. It also assumes the range of possible values is 10000 - 99999. If it goes past that, one of the zones will get overwritten with a different range. For example, Zone1 will get overwritten with the 100k values, etc.
recorded_zones = {}
with arcpy.da.SearchCursor(fc, fields) as cursor:
for row in cursor:
current_zone_value = row[0]
# Get first digit of value to identify the zone.
current_zone = str(current_zone_value)
current_zone = int(current_zone[0])
# Compare zone values and updated if current zone value is higher.
# Defaults recorded_zone_value to 0 if not found.
recorded_zone_value = zones.get(current_zone, 0)
if recorded_zone_value > current_zone_value:
recorded_zones[current_zone] = current_zone_value
# Do something with the zone values
for zone, value in recorded_zones.items():
print("Zone{} = {}".format(zone, value))