Maison > développement back-end > Tutoriel Python > Coder du golf en Python

Coder du golf en Python

王林
Libérer: 2023-08-19 23:25:19
avant
846 Les gens l'ont consulté

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)
Copier après la connexion

Ce code peut être réduit à une seule ligne en utilisant des compréhensions de liste :

La traduction chinoise de

Exemple

est :

Exemple

even_numbers = [i for i in range(1, 11) if i % 2 == 0]
print(even_numbers)
Copier après la connexion

Sortie

[2, 4, 6, 8, 10]
Copier après la connexion

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
Copier après la connexion

Grâce à la fonction sum() intégrée, ce code peut être condensé en une seule ligne :

La traduction chinoise de

Exemple

est :

Exemple

even_sum = sum([i for i in range(1, 11) if i % 2 == 0])
print(even_sum)
Copier après la connexion

Sortie

30
Copier après la connexion

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
Copier après la connexion

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 de

Exemple

est :

Exemple

from functools import reduce
print(*(reduce(lambda f, _: f+[f[-1]+f[-2]], range(8), [0, 1])), sep='\n')
Copier après la connexion

Sortie

3
0
1
1
2
3
5
8
13
Copier après la connexion

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)
Copier après la connexion

En utilisant la fonction lambda vous pouvez compresser ce code en une seule ligne :

La traduction chinoise de

Exemple

est :

Exemple

my_list = [(1, 3), (2, 1), (3, 2)]
sorted_list = sorted(my_list, key=lambda x: x[1])
Copier après la connexion

Sortie

[(2, 1), (3, 2), (1, 3)]
Copier après la connexion

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)
Copier après la connexion

En utilisant la fonction count() et la méthode str.lower(), ce code peut être condensé en une seule ligne :

La traduction chinoise de

Exemple

est :

Exemple

my_string = "Hello, World!"
print(sum(my_string.lower().count(vowel) for vowel in "aeiou"))
Copier après la connexion

Sortie

3
Copier après la connexion

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 de

Code 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)
Copier après la connexion

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)))
Copier après la connexion

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!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal