10 astuces Python Ă  connaĂźtre

Selon StackOverflow, Python est le langage de programmation à la croissance la plus rapide. Par exemple, l'un des rapports Forbes indique que l'utilisation de Python a augmenté de 456%. Python est utilisé par Netflix, IBM et des milliers d'entreprises à travers le monde. N'oublions pas Dropbox. Les services de cette société sont également écrits en Python. Selon les recherches de Dice , les connaissances dans le domaine de Python sont trÚs recherchées aujourd'hui, et l'indice de popularité des langages de programmation suggÚre que Python est aujourd'hui le langage le plus populaire au monde. Si vous comparez Python avec d'autres langages, il s'avÚre qu'il a les points forts suivants:

  1. Compatible avec la grande majorité des plateformes et des systÚmes d'exploitation.
  2. La présence de nombreux frameworks et outils open source.
  3. Code facile Ă  lire et Ă  maintenir.
  4. BibliothĂšque standard fiable.
  5. Mécanisme de développement standard par test.



Astuces Python


Ici, je voudrais attirer votre attention sur 10 conseils utiles concernant la programmation Python. Ils sont tout Ă  fait capables de vous aider dans votre travail quotidien.

▍1. ConcatĂ©nation de chaĂźnes


Si vous devez concaténer une liste de chaßnes, vous pouvez le faire dans une boucle for , en ajoutant une ligne à la fois au résultat final. Cependant, cette approche sera trÚs inefficace, surtout si la liste est suffisamment longue. En Python, les chaßnes sont des entités immuables. Par conséquent, chaque opération de concaténation de chaßnes signifie que vous devez copier quelques lignes sur une nouvelle ligne.

Une approche plus efficace pour résoudre ce problÚme consiste à utiliser la fonction join() :

 characters = ['p', 'y', 't', 'h', 'o', 'n'] word = "".join(characters) print(word) # python 

▍2. Utilisation de gĂ©nĂ©rateurs de listes


Les générateurs de listes sont utilisés pour créer de nouvelles listes à partir d'autres objets itérables. Puisque le générateur renvoie des listes, sa description est une expression, placée entre crochets, exécutée pour chaque élément de la liste. Cela inclut également une description de la boucle for qui traverse chaque élément. Les générateurs de listes peuvent accélérer le travail avec les listes car l'interpréteur Python est optimisé pour les modÚles qui sont répétés lorsque la liste est parcourue.

Par exemple, pensez à trouver les carrés des cinq premiers entiers à l'aide d'un générateur de liste:

 m = [x ** 2 for x in range(5)] print(m) # [0, 1, 4, 9, 16] 

Maintenant, nous trouvons les numéros qui apparaissent dans chacune des deux listes:

 list_a = [1, 2, 3, 4] list_b = [2, 3, 4, 5] common_num = [a for a in list_a for b in list_b if a == b] print(common_num) # [2, 3, 4] 

▍3. ItĂ©rer sur des listes avec enumerate ()


La mĂ©thode enumerate() ajoute une numĂ©rotation Ă  la collection itĂ©rĂ©e et renvoie un objet qui gĂ©nĂšre des paires d'Ă©lĂ©ments constituĂ©es de l'index de l'Ă©lĂ©ment et de cet Ă©lĂ©ment lui-mĂȘme.

RĂ©solvons le problĂšme classique de FizzBuzz proposĂ© lors des entretiens. Voici la condition pour cette tĂąche: «Écrivez un programme qui affiche une liste de nombres. Dans ce cas, au lieu de nombres qui sont des multiples de 3, le fizz est affichĂ©, au lieu des nombres qui sont des multiples de 5 - buzz, et au lieu des nombres qui sont des multiples de 3 et 5 - fizzbuzz. "

 numbers = [30, 42, 28, 50, 15] for i, num in enumerate(numbers):    if num % 3 == 0 and num % 5 == 0:       numbers[i] = 'fizzbuzz'    elif num % 3 == 0:       numbers[i] = 'fizz'    elif num % 5 == 0:       numbers[i] = 'buzz' print(numbers) # ['fizzbuzz', 'fizz', 28, 'buzz', 'fizzbuzz'] 

▍4. Utiliser zip () avec des listes


Supposons que vous deviez combiner plusieurs listes de la mĂȘme longueur et afficher la liste rĂ©sultante. Comme dans d'autres cas, un problĂšme similaire peut ĂȘtre rĂ©solu, pour ainsi dire, «sur le front», ou vous pouvez utiliser quelque chose comme la fonction universelle zip() :

 countries = ['France', 'Germany', 'Canada'] capitals = ['Paris', 'Berlin', 'Ottawa'] for country, capital in zip(countries,capitals):    print(country, capital) # France Paris                              Germany Berlin                              Canada Ottawa 

▍5. Utilisation du module itertools


Le module itertools Python est un ensemble d'outils pour travailler avec les itérateurs. Ce module comprend de nombreux outils pour générer différentes séquences. Ici, à titre d'exemple, considérons la méthode itertools.combinations() . Cette méthode est utilisée pour créer des combinaisons. Il existe également des outils pour regrouper les valeurs d'entrée.

Prenons un exemple réel pour comprendre ce qui précÚde.

Imaginez que dans un certain tournoi quatre équipes participent. Dans le tour de groupe, les matchs de chaque équipe contre chacune des autres équipes ont lieu. Votre tùche consiste à générer toutes les combinaisons possibles d'équipes qui joueront les unes contre les autres.

Jetez un Ɠil au code suivant:

 import itertools friends = ['Team 1', 'Team 2', 'Team 3', 'Team 4'] list(itertools.combinations(friends, r=2)) # [('Team 1', 'Team 2'),   ('Team 1', 'Team 3'), ('Team 1', 'Team 4'), ('Team 2', 'Team 3'), ('Team 2', 'Team 4'), ('Team 3', 'Team 4')] 

Ici, vous devez faire attention au fait que l'ordre des valeurs est sans importance. Étant donnĂ© que les combinaisons ('Team 1', 'Team 2') et ('Team 2', 'Team 1') reprĂ©sentent la mĂȘme paire d'Ă©quipes, une seule d'entre elles sera incluse dans la liste finale. De mĂȘme, vous pouvez utiliser la mĂ©thode itertools.permutations() et d'autres mĂ©thodes de ce module. Un guide dĂ©taillĂ© des itertools peut ĂȘtre trouvĂ© ici .

▍6. Utilisation des collections Python


Les collections Python sont des types de données de conteneur. En particulier, ce sont des listes, des ensembles, des tuples, des dictionnaires. Le module de collections fournit au développeur des types de données hautes performances qui aident à améliorer le code, le rendre plus propre et le rendre plus facile à utiliser. Ce module contient de nombreuses méthodes utiles. Ici, nous regardons la méthode Counter() .

Cette méthode prend un objet itérable, tel qu'une liste ou un tuple, et retourne un dictionnaire contenant des informations sur le nombre d'objets différents dans la liste en cours d'examen (Counter Dictionary). Les clés d'un tel dictionnaire sont des éléments uniques représentés dans l'objet itérable, et les valeurs sont les quantités de ces éléments.

Pour créer un objet Counter , vous devez passer un objet itérable (liste, par exemple) à la méthode Counter() :

 import collections count = collections.Counter(['a','b','c','d','b','c','d','b']) print(count) # Counter({'b': 3, 'c': 2, 'd': 2, 'a': 1}) 

Les dĂ©tails sur le module des collections peuvent ĂȘtre trouvĂ©s ici .

▍ 7. Convertir deux listes en un dictionnaire


Supposons que nous ayons deux listes. L'un d'eux contient les noms des Ă©tudiants, et le second contient leurs notes. Comment convertir ces deux listes en dictionnaire? Si nous avons recours Ă  la fonction zip() pour cela, ce problĂšme peut ĂȘtre rĂ©solu comme suit:

 students = ["Peter", "Julia", "Alex"] marks = [84, 65, 77] dictionary = dict(zip(students, marks)) print(dictionary) # {'Peter': 84, 'Julia': 65, 'Alex': 77} 

▍8. Utilisation des fonctions du gĂ©nĂ©rateur


Les fonctions de générateur sont des fonctions qui se comportent comme des itérateurs. Ils permettent au programmeur de créer rapidement et facilement des itérateurs soignés. Prenons un exemple qui révÚle cette idée.

Supposons que nous devons trouver la somme des carrés des 100 000 000 premiers entiers commençant à 1.

Cette tĂąche semble simple. Il peut ĂȘtre rĂ©solu sans problĂšme en utilisant des gĂ©nĂ©rateurs de listes. Cependant, le problĂšme ici est la grande quantitĂ© de donnĂ©es d'entrĂ©e. Jetez un Ɠil au code suivant:

 import time t1 = time.clock() sum([i * i for i in range(1, 100000000)]) t2 = time.clock() time_diff = t2 - t1 print(f"It took {time_diff} Secs to execute this method") # It took 13.197494000000006 Secs to execute this method 

Si nous avons besoin de trouver la somme des carrés pour un nombre encore plus grand de nombres, alors il s'avÚre que cette technique ne fonctionne pas bien pour les trouver, car il faut beaucoup de temps pour trouver une solution. Dans cette situation, les fonctions du générateur Python nous seront utiles. Dans notre cas, pour passer de l'utilisation des générateurs de liste aux fonctions de générateur, il suffit de changer les crochets de l'expression du générateur en arrondis. Nous faisons cela et trouvons le temps nécessaire pour résoudre le problÚme:

 import time t1 = time.clock() sum((i * i for i in range(1, 100000000))) t2 = time.clock() time_diff = t2 - t1 print(f"It took {time_diff} Secs to execute this method") # It took 9.53867000000001 Secs to execute this method 

Comme vous pouvez le voir, il faut dĂ©sormais moins de temps pour rĂ©soudre le mĂȘme problĂšme. Et avec l'augmentation des donnĂ©es d'entrĂ©e, cet effet sera encore plus perceptible.

Voici des informations sur les fonctions du générateur.

▍ 9. Renvoyer plusieurs valeurs d'une fonction


Python a la capacitĂ© de renvoyer plusieurs valeurs d'une fonction. Cela ne se trouve pas dans de nombreux autres langages de programmation populaires. Pour renvoyer plusieurs valeurs d'une fonction, elles doivent ĂȘtre sĂ©parĂ©es par des virgules. Sur la base de cette liste de valeurs, Python va crĂ©er un tuple et le retourner lĂ  oĂč la fonction a Ă©tĂ© appelĂ©e. Voici un exemple:

 def multiplication_division(num1, num2):    return num1*num2, num1/num2 product, division = multiplication_division(15, 3) print("Product =", product, "Quotient =", division) # Product = 45 Quotient = 5.0 

▍ 10. Utilisation de la fonction sorted ()


En Python, il est trÚs facile de trier certaines séquences de données à l'aide de la fonction intégrée sorted() , qui s'occupe de résoudre toutes les tùches associées. Cette fonction trie toutes les séquences (listes, tuples) et renvoie toujours une liste avec des éléments triés. Prenons un exemple de tri d'une liste de nombres dans l'ordre croissant:

 sorted([3,5,2,1,4]) # [1, 2, 3, 4, 5] 

Et voici un exemple de tri d'une liste de lignes dans l'ordre décroissant:

 sorted(['france', 'germany', 'canada', 'india', 'china'], reverse=True) # ['india', 'germany', 'france', 'china', 'canada'] 

Résumé


Cet article a présenté 10 conseils de programmation Python utiles que vous pourriez trouver utiles dans votre travail quotidien. Nous espérons que vous trouverez parmi eux quelque chose qui vous sera bénéfique.

Chers lecteurs! Les développeurs Python expérimentés sont encouragés à parler des fonctionnalités Python utiles qu'ils utilisent réguliÚrement.


Source: https://habr.com/ru/post/fr479274/


All Articles