Quelques trucs et astuces pour vous aider à coder plus rapidement
Python est un langage de programmation direct, sans baratin. Sa lisibilité et la simplicité de son design sont deux des principales raisons qui font son immense popularité.
Comme le dit le Zen de Python :
La beauté à la laideur.
L’explicite à l’implicite.
C’est la raison pour laquelle il est utile de rappeler quelques astuces sur Python pour vous aider à améliorer vos compétences en codage. De cette manière, vous ne serez plus obligé de visiter le site Stack Overflow, chaque fois que vous devez faire quelque chose.
Les astuces suivantes vous seront utiles dans vos exercices de codage quotidiens.
1. Inversion d’une chaîne de caractères
L’extrait suivant inverse une chaîne de caractères en utilisant l’opération de découpage sous Python.
# Reversing a string using slicing my_string = "ABCDE" reversed_string = my_string[::-1] print(reversed_string) # Output # EDCBA
Vous pouvez en apprendre plus à ce sujet ici.
2. Utilisation de la casse du titre (Premières Lettres en Majuscules)
L’extrait suivant peut être utilisé pour convertir une chaîne de caractères en casse de titre. Ceci se fait en utilisant la méthode title () de la classe string.
my_string = "my name is Antoine" # using the title() function of string class new_string = my_string.title() print(new_string) # Output # My Name Is Antoine
3. Trouver des éléments uniques dans une chaîne de caractères
L’extrait suivant peut être utilisé pour trouver tous les éléments uniques d’une chaîne de caractères. Nous partons du principe que tous les éléments d’un ensemble sont uniques.
my_string = "aabbccddddeee" # converting the string to a set temp_set = set(my_string) # stitching set into a string using join new_string = ''.join(temp_set) print(new_string)
4. Impression d’une chaîne de caractères ou d’une liste n fois
Il est possible d’utiliser la multiplication (*) avec des chaînes de caractères ou des listes. Cela nous permet de les multiplier autant de fois que nous le souhaitons.
n = 3 # number of repetitions my_string = "abcd" my_list = [1,2,3] print(my_string*n) # abcdabcdabcd print(my_list*n) # [1,2,3,1,2,3,1,2,3]
Un intéressant cas d’utilisation de la multiplication pourrait être de définir une liste avec une valeur constante — disons zéro.
n = 4
my_list = [0]*n # n denotes the length of the required list
# [0, 0, 0, 0]
5. Compréhension de liste
La compréhension de liste nous fournit une façon élégante de créer des listes basées sur d’autres.
L’extrait suivant crée une nouvelle liste en multipliant chaque élément de l’ancienne liste par deux.
# Multiplying each element in a list by 2 original_list = [1,2,3,4] new_list = [2*x for x in original_list] print(new_list) # [2,4,6,8]
Vous pouvez en apprendre plus à ce sujet ici.
6. Échange de valeurs entre deux variables
Python rend très simple l’échange de valeurs entre deux variables sans utiliser une autre variable.
a = 1 b = 2 a, b = b, a print(a) # 2 print(b) # 1
7. Fractionner une chaîne de caractères en une liste de sous-chaînes
Nous pouvons fractionner une chaîne de caractères en une liste de sous-chaînes en utilisant la méthode .split() de la classe string. Vous pouvez également passer en argument, le séparateur que vous souhaitez fractionner.
string_1 = "My name is Antoine Lisel" string_2 = "sample/ string 2" # default separator ' ' print(string_1.split()) # ['My', 'name', 'is', 'Antoine', 'Lisel'] # defining separator as '/' print(string_2.split('/')) # ['sample', ' string 2']
8. Combinaison d’une liste de chaînes de caractères en une seule chaîne de caractères
La méthode join() combine une liste de chaînes de caractères passées en argument en une seule chaîne. Dans notre cas, nous les séparons avec le séparateur virgule.
list_of_strings = ['My', 'name', 'is', 'Antoine', 'Lisel'] # Using join with the comma separator print(','.join(list_of_strings)) # Output # My,name,is,Antoine,Lisel
9. Vérifier si une chaîne donnée est un palindrome ou non
Nous avons déjà parlé de comment inverser une chaîne de caractères. Les palindromes deviennent donc un programme à résultat direct en langage Python.
my_string = "abcba" if my_string == my_string[::-1]: print("palindrome") else: print("not palindrome") # Output # palindrome
10. Fréquence des éléments d’une liste
Il y a plusieurs façons de le faire, mais ma préférée est d’utiliser la classe Counter de Python.
Le compteur Python suit la fréquence de chaque élément du conteneur. Counter() donne un dictionnaire avec les éléments comme clés et la fréquence comme valeurs.
Nous utilisons aussi la fonction most_common() pour obtenir l’élément le plus fréquent [most_frequent element] de la liste.
# finding frequency of each element in a list from collections import Counter my_list = ['a','a','b','b','b','c','d','d','d','d','d'] count = Counter(my_list) # defining a counter object print(count) # Of all elements # Counter({'d': 5, 'b': 3, 'a': 2, 'c': 1}) print(count['b']) # of individual element # 3 print(count.most_common(1)) # most frequent element # [('d', 5)]
11. Découvrir si deux chaînes sont des anagrammes
Un intéressant usage de la classe Counter est de trouver des anagrammes.
Une anagramme est une expression ou un mot formé en réarrangeant les lettres d’une expression ou d’un mot différent.
Si les objets Counter de deux chaînes sont égaux, alors ce sont des anagrammes.
from collections import Counter str_1, str_2, str_3 = "acbde", "abced", "abcda" cnt_1, cnt_2, cnt_3 = Counter(str_1), Counter(str_2), Counter(str_3) if cnt_1 == cnt_2: print('1 and 2 anagram') if cnt_1 == cnt_3: print('1 and 3 anagram')
12. Utilisation du bloc try-except-else
La gestion des erreurs avec Python peut être faite aisément en utilisant le bloc try/except. L’ajout d’une autre instruction à ce bloc pourrait être utile. Ce code fonctionne lorsqu’aucune exception n’est précisée dans le bloc try.
Si vous avez besoin d’exécuter quelque chose indépendamment de l’exception, utilisez finally.
a, b = 1,0 try: print(a/b) # exception raised when b is 0 except ZeroDivisionError: print("division by zero") else: print("no exceptions raised") finally: print("Run this always")
13. Utilisation de l’énumération pour obtenir des paires index/valeur
Le script suivant utilise l’énumération pour itérer les valeurs d’une liste avec leurs indices.
my_list = ['a', 'b', 'c', 'd', 'e'] for index, value in enumerate(my_list): print('{0}: {1}'.format(index, value)) # 0: a # 1: b # 2: c # 3: d # 4: e
14. Vérifier l’utilisation de la mémoire d’un objet
Le script suivant peut être utilisé pour vérifier l’utilisation de la mémoire d’un objet. Vous pouvez en apprendre plus à ce sujet ici.
import sys num = 21 print(sys.getsizeof(num)) # In Python 2, 24 # In Python 3, 28
15. Fusionner deux dictionnaires
Pendant que dans Python 2, nous utilisions la méthode update() pour fusionner deux dictionnaires, Python 3.5 a rendu le processus encore plus simple.
Dans le script ci-dessous, deux dictionnaires ont été fusionnés. Les valeurs du deuxième dictionnaire sont utilisées en cas de croisements.
dict_1 = {'apple': 9, 'banana': 6} dict_2 = {'banana': 4, 'orange': 8} combined_dict = {**dict_1, **dict_2} print(combined_dict) # Output # {'apple': 9, 'banana': 4, 'orange': 8}
16. Temps nécessaire à l’exécution d’un bout de code
L’extrait suivant utilise le module time pour calculer le temps nécessaire à l’exécution d’un bout de code.
import time start_time = time.time() # Code to check follows a, b = 1,2 c = a+ b # Code to check ends end_time = time.time() time_taken_in_micro = (end_time- start_time)*(10**6) print(" Time taken in micro_seconds: {0} ms").format(time_taken_in_micro)
17. Aplatissement d’une liste de listes
Parfois, vous n’êtes pas sûr du niveau de hiérarchisation de votre liste, et vous voulez simplement avoir tous les éléments dans une liste plate unique.
Voici comment vous pouvez l’obtenir :
from iteration_utilities import deepflatten # if you only have one depth nested_list, use this def flatten(l): return [item for sublist in l for item in sublist] l = [[1,2,3],[3]] print(flatten(l)) # [1, 2, 3, 3] # if you don't know how deep the list is nested l = [[1,2,3],[4,[5],[6,7]],[8,[9,[10]]]] print(list(deepflatten(l, depth=3))) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Numpy flatten est une meilleure manière d’y arriver si vous avez un tableau correctement formaté.
18. Échantillonnage à partir d’une liste
L’extrait suivant génère n nombre d’échantillons aléatoires à partir d’une liste donnée en utilisant le module random.
import random my_list = ['a', 'b', 'c', 'd', 'e'] num_samples = 2 samples = random.sample(my_list,num_samples) print(samples) # [ 'a', 'e'] this will have any 2 random values
On m’a recommandé le module secrets pour générer des échantillons aléatoires à des fins de cryptographie. L’extrait suivant ne fonctionnera que sur Python 3.
import secrets # imports secure module. secure_random = secrets.SystemRandom() # creates a secure random object. my_list = ['a','b','c','d','e'] num_samples = 2 samples = secure_random.sample(my_list, num_samples) print(samples) # [ 'e', 'd'] this will have any 2 random values
19. Numériser
L’extrait suivant convertira un nombre entier en une liste de chiffres.
num = 123456 # using map list_of_digits = list(map(int, str(num))) print(list_of_digits) # [1, 2, 3, 4, 5, 6] # using list comprehension list_of_digits = [int(x) for x in str(num)] print(list_of_digits) # [1, 2, 3, 4, 5, 6] # Even simpler approach list_of_digits = list(str(num)) print(list_of_digits) # [1, 2, 3, 4, 5, 6]
20. Vérifier le caractère unique
La fonction suivante vérifiera si tous les éléments d’une liste sont uniques.
def unique(l): if len(l)==len(set(l)): print("All elements are unique") else: print("List has duplicates") unique([1,2,3,4]) # All elements are unique unique([1,1,2,3]) # List has duplicates
Conclusion
Ce sont là de petits extraits que je trouve extrêmement utiles pour mes tâches quotidiennes. Le site 30 seconds of python m’a beaucoup aidé pendant mes recherches pour rédiger cet article.
Lire aussi: Web scraping avec Python
Parcourir nos offres d’emploi Python
Anonymous
mouais, je ne suis pas sûr que savoir détecter si un mot est un palindrome ou pas me sera vraiment utile dans mon travail…
cette liste ci semble plus pertinente :
https://pasdagepourcoder.medium.com/50-astuces-en-python-que-tout-le-monde-devrait-conna%C3%AEtre-faeb7be00482