Coder du golf en Python
Code golfing est un concours de programmation qui met les participants au défi d'écrire un programme qui résout un problème spécifique avec le moins de caractères possible. En d’autres termes, le code golfing consiste à écrire du code propre. Bien que le golf de code puisse être effectué dans n'importe quel langage de programmation, Python est particulièrement adapté à ce défi en raison de sa syntaxe concise et de ses puissantes fonctions intégrées.
Dans cet article, nous explorerons quelques conseils et stratégies pour le golf de code en Python, tout en fournissant des exemples et des résultats applicables.
Utilisez les compréhensions de listes
Les compréhensions de listes sont un outil puissant en Python pour créer des listes de manière concise et lisible. Dans le golf de code, les compréhensions de listes peuvent remplacer des boucles plus longues et des instructions conditionnelles. Par exemple, considérons le code suivant, qui crée une liste contenant tous les nombres pairs entre 1 et 10 :
even_numbers = [] for i in range(1, 11): if i % 2 == 0: even_numbers.append(i)
Ce code peut être réduit à une seule ligne en utilisant des compréhensions de liste :
La traduction chinoise deExemple
est :Exemple
even_numbers = [i for i in range(1, 11) if i % 2 == 0] print(even_numbers)
Sortie
[2, 4, 6, 8, 10]
Ce code utilise des compréhensions de liste au lieu d'une boucle for et de la méthode append() pour générer la même liste de nombres pairs entre 1 et 10 que l'exemple précédent. L’utilisation de compréhensions de listes peut réduire considérablement la quantité de code nécessaire pour obtenir un résultat, ce qui en fait un outil puissant dans le golf de code.
Utilisez les fonctions intégrées
Python dispose d'un large éventail de fonctions intégrées pour effectuer des opérations courantes de manière concise. Lorsque vous jouez au code golf, il est important de se familiariser avec ces fonctions et leur syntaxe. Par exemple, considérons le code suivant, qui calcule la somme de tous les nombres pairs compris entre 1 et 10 :
even_numbers = [i for i in range(1, 11) if i % 2 == 0] even_sum = 0 for num in even_numbers: even_sum += num
Grâce à la fonction sum() intégrée, ce code peut être condensé en une seule ligne :
La traduction chinoise deExemple
est :Exemple
even_sum = sum([i for i in range(1, 11) if i % 2 == 0]) print(even_sum)
Sortie
30
Il faut moins de code pour générer une liste de nombres pairs de 1 à 10 à l'aide de sum() et de compréhensions de liste, et imprimer leur somme en sortie.
Utiliser des raccourcis
En Python, il existe certains raccourcis et abréviations qui peuvent réduire efficacement la quantité de code requise pour certaines opérations. Par exemple, jetons un œil au code suivant, qui vérifie si une valeur spécifique existe dans une liste :
a, b = 0, 1 for i in range(10): print(a) a, b = b, a+b
Ce code peut être condensé en une seule ligne en utilisant la fonction lambda et la fonction réduire() du module functools :
La traduction chinoise deExemple
est :Exemple
from functools import reduce print(*(reduce(lambda f, _: f+[f[-1]+f[-2]], range(8), [0, 1])), sep='\n')
Sortie
3 0 1 1 2 3 5 8 13
Ce programme utilise les fonctions réduire() et lambda pour compter le nombre de voyelles dans "Hello, World!" et génère les 8 premiers nombres de Fibonacci, puis imprime la séquence.
Utiliser la fonction Lambda
En Python, une fonction lambda est une fonction sans nom qui peut être déclarée en une seule ligne de code. Les fonctions Lambda sont particulièrement utiles pour la compression de code, lorsque vous devez définir rapidement une fonction simple. Par exemple, considérons le code suivant, qui trie une liste de tuples en fonction du deuxième élément de chaque tuple :
my_list = [(1, 3), (2, 1), (3, 2)] def sort_by_second(elem): return elem[1] sorted_list = sorted(my_list, key=sort_by_second)
En utilisant la fonction lambda vous pouvez compresser ce code en une seule ligne :
La traduction chinoise deExemple
est :Exemple
my_list = [(1, 3), (2, 1), (3, 2)] sorted_list = sorted(my_list, key=lambda x: x[1])
Sortie
[(2, 1), (3, 2), (1, 3)]
En utilisant les fonctions lambda, nous pouvons définir des critères de tri de manière concise et lisible sans avoir à définir les fonctions séparément.
Évitez le code redondant
Lorsque vous jouez au code golf, il est important d’éviter d’écrire du code redondant ou répétitif. Cela peut inclure des variables, des boucles ou des instructions conditionnelles inutiles. Par exemple, considérons le code suivant qui compte le nombre de voyelles dans une chaîne :
my_string = "Hello, World!" vowel_count = 0 for char in my_string: if char in "aeiouAEIOU": vowel_count += 1 print(vowel_count)
En utilisant la fonction count() et la méthode str.lower(), ce code peut être condensé en une seule ligne :
La traduction chinoise deExemple
est :Exemple
my_string = "Hello, World!" print(sum(my_string.lower().count(vowel) for vowel in "aeiou"))
Sortie
3
En utilisant la fonction count() et la méthode str.lower(), nous pouvons effectuer la même opération de manière plus concise et lisible.
La traduction chinoise deCode Golfing Exemples
est :Code Golfing Exemples
Pour démontrer certaines des techniques et stratégies dont nous avons discuté, examinons quelques exemples de golf de code Python.
Exemple : FizzBuzz
Le problème FizzBuzz est un défi de codage courant qui consiste à imprimer des nombres de 1 à 100, à remplacer les multiples de 3 par "Fizz", les multiples de 5 par "Buzz" et le remplacement des multiples de 3 par "Buzz" par Remplacer le nombre par " FizzBuzz". Voici une solution au problème FizzBuzz en utilisant des boucles traditionnelles et des méthodes conditionnelles :
for i in range(1, 101): if i % 15 == 0: print("FizzBuzz") elif i % 3 == 0: print("Fizz") elif i % 5 == 0: print("Buzz") else: print(i)
En utilisant la compréhension de liste et la concaténation de chaînes, ce code peut être condensé en une seule ligne :
print('\n'.join("Fizz"*(i%3==0)+"Buzz"*(i%5==0) or str(i) for i in range(1,101)))
En utilisant la compréhension de listes et la concaténation de chaînes, nous pouvons réduire considérablement la quantité de code requise pour résoudre les problèmes de FizzBuzz.
Le programme de sortie remplace les multiples de 3 par "Fizz", les multiples de 5 par "Buzz" et les nombres multiples de 3 et 5 par "FizzBuzz". Tous les autres numéros sont imprimés tels quels.
Conclusion
En résumé, le code golf est une méthode de programmation populaire qui consiste à écrire du code avec le moins de caractères possible pour accomplir une tâche. En Python, il existe plusieurs techniques que vous pouvez utiliser pour réduire la taille du code, telles que l'utilisation de compréhensions de liste, de fonctions lambda et de fonctions intégrées telles que sum() et sorted(). Bien que le code golf puisse être un exercice amusant et éducatif, la lisibilité et la maintenabilité de votre code doivent toujours être votre priorité absolue lorsque vous écrivez du code pour des applications du monde réel. Ainsi, même s'il peut être tentant de rechercher le code le plus court possible, il est important pour vous et pour les autres de garder votre code clair et compréhensible.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Solution aux problèmes d'autorisation Lors de la visualisation de la version Python dans Linux Terminal Lorsque vous essayez d'afficher la version Python dans Linux Terminal, entrez Python ...

Comment enseigner les bases de la programmation novice en informatique dans les 10 heures? Si vous n'avez que 10 heures pour enseigner à l'informatique novice des connaissances en programmation, que choisissez-vous d'enseigner ...

Comment éviter d'être détecté lors de l'utilisation de FiddlereVerywhere pour les lectures d'homme dans le milieu lorsque vous utilisez FiddlereVerywhere ...

Lorsque vous utilisez la bibliothèque Pandas de Python, comment copier des colonnes entières entre deux frames de données avec différentes structures est un problème courant. Supposons que nous ayons deux dats ...

Comment Uvicorn écoute-t-il en permanence les demandes HTTP? Uvicorn est un serveur Web léger basé sur ASGI. L'une de ses fonctions principales est d'écouter les demandes HTTP et de procéder ...

Dans Python, comment créer dynamiquement un objet via une chaîne et appeler ses méthodes? Il s'agit d'une exigence de programmation courante, surtout si elle doit être configurée ou exécutée ...

Utilisation de Python dans Linux Terminal ...

Fastapi ...
