Table des matières
Utilisez les compréhensions de listes
Exemple
Sortie
Utilisez les fonctions intégrées
Utiliser des raccourcis
Utiliser la fonction Lambda
Évitez le code redondant
Code Golfing Exemples
Exemple : FizzBuzz
Conclusion

Coder du golf en Python

Aug 19, 2023 pm 11:25 PM
Première recherche en profondeur (dfs) programmation dynamique (dp) compréhension de liste

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

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 !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment résoudre le problème des autorisations rencontré lors de la visualisation de la version Python dans le terminal Linux? Comment résoudre le problème des autorisations rencontré lors de la visualisation de la version Python dans le terminal Linux? Apr 01, 2025 pm 05:09 PM

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 le projet et les méthodes axées sur les problèmes dans les 10 heures? Comment enseigner les bases de la programmation novice en informatique dans le projet et les méthodes axées sur les problèmes dans les 10 heures? Apr 02, 2025 am 07:18 AM

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é par le navigateur lors de l'utilisation de Fiddler partout pour la lecture de l'homme au milieu? Comment éviter d'être détecté par le navigateur lors de l'utilisation de Fiddler partout pour la lecture de l'homme au milieu? Apr 02, 2025 am 07:15 AM

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

Comment copier efficacement la colonne entière d'une dataframe dans une autre dataframe avec différentes structures dans Python? Comment copier efficacement la colonne entière d'une dataframe dans une autre dataframe avec différentes structures dans Python? Apr 01, 2025 pm 11:15 PM

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 sans servir_forever ()? Comment Uvicorn écoute-t-il en permanence les demandes HTTP sans servir_forever ()? Apr 01, 2025 pm 10:51 PM

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 ...

Comment créer dynamiquement un objet via une chaîne et appeler ses méthodes dans Python? Comment créer dynamiquement un objet via une chaîne et appeler ses méthodes dans Python? Apr 01, 2025 pm 11:18 PM

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 ...

See all articles