Clockwise spiral traversal of 2D input matrix
You’re being a bit verbose, adding elements one at a time in a loop to the output array.  You can use .extend() to add several elements at once, and use a slice to extract the required elements from the inputMatrix rows:

output.extend( inputMatrix[top_row][left_col:right_col+1] )


Unfortunately, you can’t slice a column (without using numpy), but you can still use list comprehension:

output.extend( inputMatrix[row][right_col] for row in range(top_row, bottom_row+1) )


Adding the elements at the bottom of the spiral would require a slice using a negative step, but left_col-1 will initially evaluate to -1 so inputMatrix[bottom_row][right_col:left_col-1:-1] doesn’t work as desired.  You’d need to special case left_col == 0 and use the slice [right_col:None:-1] or [right_col::-1].  Alternately, you could use list comprehension.

Going up the left side is exactly like going down the right side: use list comprehension.

output.extend( inputMatrix[row][left_col] for row in range(bottom_row, top_row-1, -1) )




Notice I used row, instead of i, as the loop index.  I feel this makes the code a little clearer.



An alternative method of doing the spiral copy would be to separate the index generation from the copy.

output = [ inputMatrix[r][c] for r, c in spiral(len(inputMaxtrix), len(inputMatrix[0])) ]


where spiral(rows, cols) is a generator function for the spiral coordinates.  Writing the spiral generator left as an exercise to the student.