Indices generator for diagonal left-to-right top-to-bottom traversal of 2D array
def diagonal(rows, cols, start = 0): for d in xrange(start, rows + cols - 1): for r in xrange(max(d - cols + 1, 0), min(d + 1, rows)): yield r, d - r