A bit explanation why the OP's function is not working:
f1 = a string
list= a list
When you are iterating over the list, for each member of list you will get either positive or negative response. So your list has nine members; you will get nine responses(+ and -). Then what the calc function will return, whole nine responses or one? Of-course python function will return only one in this case. Since only one return is allowed so calc function is returning the response for the last member i.e.'09TH' and you will get all instances of '09TH' with no leading "0" but nothing about all the other instances e.g.'01ST', '02ND', '03RD', '04TH', '05TH', '06TH', '07TH', '08TH'.
No need to iterate over the list, just check if f1 is in the list.
list = ['01ST', '02ND', '03RD', '04TH', '05TH', '06TH', '07TH', '08TH', '09TH']
if f1 in list:
f1 = f1.replace('0','')
N.B. Avoid variable declaration with reserved words. You defined a list variable named list, list is reserved word of python.