I would use a try/except logic here, where I attempt to parse the string as an int, if it throws an exception, parse as a float, and if even that throws an exception, say that it is indeed a string like so.
def check_type(str):
    try:
        int(str)
        print(str, 'is a integer')
    except:
        try:
            float(str)
            print(str, 'is a float')
        except:
            print(str, 'is a string')
Then when I execute it on your list, I will get
lst = ['3', 'random2', '5.05', '1', 'Cool phrase']
for l in lst:
    check_type(l)
#3 is a integer
#random2 is a string
#5.05 is a float
#1 is a integer
#Cool phrase is a string