If the calculation was done by collecting all the minx, miny, maxx and maxy and use the resulting mins and maxs as points to construct the extent, the result will be as you showed in your image. This is however, as you concluded yourself, not the correct result.
Let's take a look at the code below that shows what happens:
import arcpy
def main():
ext1 = arcpy.Extent(1, 0, 9, 5)
ext2 = arcpy.Extent(0, 1, 10, 10)
ext3 = arcpy.Extent(0, 6, 6, 12)
print "getIntersectingExtent", getIntersectingExtent([ext1, ext2, ext3])
print "getMinsMaxsExtentsAsExtent", getMinsMaxsExtentsAsExtent([ext1, ext2, ext3])
def getIntersectingExtent(lst):
ext = lst[0]
for e in lst[1:]:
if ext.overlaps(e) or ext.contains(e) or ext.within(e) or ext.equals(e):
ext = getOverlapExents(ext, e)
else:
return None
break
return ext
def getOverlapExents(ext1, ext2):
return getMinsMaxsExtentsAsExtent([ext1, ext2])
def getMinsMaxsExtentsAsExtent(lst):
xmin = max([e.XMin for e in lst])
xmax = min([e.XMax for e in lst])
ymin = max([e.YMin for e in lst])
ymax = min([e.YMax for e in lst])
return arcpy.Extent(xmin, ymin, xmax, ymax)
if __name__ == '__main__':
main()
The result of the code is:
getIntersectingExtent None
getMinsMaxsExtentsAsExtent 1 5 6 6 NaN NaN NaN NaN
Both use the same procedure where the min and max of the extents is determined. However, the first result will test is there is overlap and then determine the minimums and maximums. The second will simply determine the minimums and maximums of the extents and when provided to the arcpy.Extent() method this will correct for minimums being larger than maximums.