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.
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 deeven_numbers = [i for i in range(1, 11) if i % 2 == 0] print(even_numbers)
[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.
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 deeven_sum = sum([i for i in range(1, 11) if i % 2 == 0]) print(even_sum)
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.
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 defrom functools import reduce print(*(reduce(lambda f, _: f+[f[-1]+f[-2]], range(8), [0, 1])), sep='\n')
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.
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 demy_list = [(1, 3), (2, 1), (3, 2)] sorted_list = sorted(my_list, key=lambda x: x[1])
[(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.
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 demy_string = "Hello, World!" print(sum(my_string.lower().count(vowel) for vowel in "aeiou"))
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 dePour démontrer certaines des techniques et stratégies dont nous avons discuté, examinons quelques exemples de golf de code Python.
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.
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!