Optimisation python

Afin de faire une fonction en python qui permet de passer d'une base 10 à une base N, je suis tombé devant un problème d'optimisation. Voici les deux codes possibles :

def conquer(integer):
     """Turns an integer into a string representation"""
     string = []
     base = len(SYMBOLS)
     while integer:
         integer, reminder = divmod(integer, base)
         string.append(SYMBOLS[reminder])
     return "".join(string[::-1])
def conquer(integer):
     """Turns an integer into a string representation"""
     string = []
     base = len(SYMBOLS)
     while integer:
         integer, reminder = divmod(integer, base)
         string.insert(0, SYMBOLS[reminder])
     return "".join(string)

La modification porte sur les deux dernières lignes du code. Est-il plus rapide de mettre les différents éléments dans la liste puis de l'inverser pour la concaténation ou bien vaut-il mieux insérer les nouveaux éléments en début de liste ? Résultat, pour un million d'itérations de la première solution, la fonction prend 30 secondes. Avec la deuxième solution, il faut 37 secondes.

La raison de ce résultat s'explique par le fait que insert doit décaler tous les éléments à chaque nouvel ajout, ce qui prend du temps. Au contraire, inverser une liste est plutôt une opération peu couteuse en cpu (mais un peu plus en mémoire).