Python: Newbie wondering if his code is 'Pythonic"
This is really the first thing that I have written in python.  I come from Java background.  I don't want to just learn how to program java code with Python syntax.  I want to learn how to program in a pythonic paradigm.

Could you guys please comment on how I can make the following code more pythonic?

    from math import sqrt

    # recursively computes the factors of a number
    def factors(num):
        factorList = []
        numroot = int(sqrt(num)) + 1
        numleft = num
        # brute force divide the number until you find a factor
        for i in range(2, numroot):
            if num % i == 0:
                # if we found a factor, add it to the list and compute the remainder
                factorList.append(i)
                numleft = num / i
                break
        # if we didn't find a factor, get out of here!
        if numleft == num: 
            factorList.append(num)
            return factorList
        # now recursively find the rest of the factors
        restFactors = factors(numleft)
        factorList.extend(restFactors)
        
        return factorList

    # grabs  all of the twos in the list and puts them into 2 ^ x form
    def transformFactorList(factorList):
        num2s = 0
        # remove all twos, counting them as we go
        while 2 in factorList:
            factorList.remove(2)
            num2s += 1
        # simply return the list with the 2's back in the right spot
        if num2s == 0: return factorList
        if num2s == 1:
            factorList.insert(0, 2)
            return factorList
        factorList.insert(0, '2 ^ ' + str(num2s))
        return factorList
        
    print transformFactorList(factors(#some number))
Python: Newbie wondering if his code is 'Pythonic"
===

This is really the first thing that I have written in python.  I come from Java background.  I don't want to just learn how to program java code with Python syntax.  I want to learn how to program in a pythonic paradigm.

Could you guys please comment on how I can make the following code more pythonic?

    from math import sqrt

    # recursively computes the factors of a number
    def factors(num):
        factorList = []
        numroot = int(sqrt(num)) + 1
        numleft = num
        # brute force divide the number until you find a factor
        for i in range(2, numroot):
            if num % i == 0:
                # if we found a factor, add it to the list and compute the remainder
                factorList.append(i)
                numleft = num / i
                break
        # if we didn't find a factor, get out of here!
        if numleft == num: 
            factorList.append(num)
            return factorList
        # now recursively find the rest of the factors
        restFactors = factors(numleft)
        factorList.extend(restFactors)
        
        return factorList

    # grabs  all of the twos in the list and puts them into 2 ^ x form
    def transformFactorList(factorList):
        num2s = 0
        # remove all twos, counting them as we go
        while 2 in factorList:
            factorList.remove(2)
            num2s += 1
        # simply return the list with the 2's back in the right spot
        if num2s == 0: return factorList
        if num2s == 1:
            factorList.insert(0, 2)
            return factorList
        factorList.insert(0, '2 ^ ' + str(num2s))
        return factorList
        
    print transformFactorList(factors(#some number))