Recherche de site Web

Ajout de chaîne en Python


L'objet chaîne en Python est immuable. Donc, chaque fois que nous utilisons l'opérateur + pour concaténer deux chaînes, une nouvelle chaîne est créée. Si nous devons ajouter plusieurs chaînes, l'utilisation de l'opérateur + créera inutilement beaucoup de chaînes temporaires avant d'obtenir le résultat final.

Ajout de chaîne en Python

Regardons une fonction pour concaténer une chaîne de caractères 'n' fois.

def str_append(s, n):
    output = ''
    i = 0
    while i < n:
        output += s
        i = i + 1
    return output

Notez que je définis cette fonction pour illustrer l'utilisation de l'opérateur +. Je vais plus tard utiliser le module timeit pour tester la performance. Si vous souhaitez simplement concaténer une chaîne de caractères 'n' fois, vous pouvez le faire facilement en utilisant s='Hi' * 10.

Une autre façon d'effectuer une opération d'ajout de chaîne est de créer une liste et d'ajouter des chaînes à la liste. Ensuite, utilisez la fonction join() de la chaîne pour les fusionner afin d'obtenir la chaîne résultante.

def str_append_list_join(s, n):
    l1 = []
    i = 0
    while i < n:
        l1.append(s)
        i += 1
    return ''.join(l1)

Testons ces méthodes pour nous assurer qu'elles fonctionnent comme prévu.

if __name__ == "__main__":
    print('Append using + operator:', str_append('Hi', 10))
    print('Append using list and join():', str_append_list_join('Hi', 10))
    # use below for this case, above methods are created so that we can
    # check performance using timeit module
    print('Append using * operator:', 'Hi' * 10)

Sortie :

Append using + operator: HiHiHiHiHiHiHiHiHiHi
Append using list and join(): HiHiHiHiHiHiHiHiHiHi
Append using * operator: HiHiHiHiHiHiHiHiHiHi

Meilleure façon d'ajouter des chaînes en Python

J'ai les deux méthodes définies dans le fichier string_append.py. Utilisons le module timeit pour vérifier leurs performances.

python3.7 -m timeit --number 1000 --unit usec 'import string_append' 'string_append.str_append("Hello", 1000)' 
1000 loops, best of 5: 174 usec per loop
python3.7 -m timeit --number 1000 --unit usec 'import string_append' 'string_append.str_append_list_join("Hello", 1000)'
1000 loops, best of 5: 140 usec per loop

python3.7 -m timeit --number 1000 --unit usec 'import string_append' 'string_append.str_append("Hi", 1000)' 
1000 loops, best of 5: 165 usec per loop
python3.7 -m timeit --number 1000 --unit usec 'import string_append' 'string_append.str_append_list_join("Hi", 1000)'
1000 loops, best of 5: 139 usec per loop

Résumé

S'il y a peu de chaînes, vous pouvez utiliser n'importe quelle méthode pour les ajouter. D'un point de vue lisibilité, l'utilisation de l'opérateur + semble meilleure pour quelques chaînes. Cependant, si vous devez ajouter beaucoup de chaînes, vous devriez utiliser la liste et la fonction join().

Vous pouvez consulter le script Python complet et d'autres exemples de Python sur notre dépôt GitHub.