Introduktion till Python List Comprehension

Python Listförståelse är ett annat sätt att skapa listor med en iterationsoperation. Det fungerar på samma sätt som en slinga fungerar, men LC används specifikt för att returnera listor. Listförståelser har uttryck inom parentes som att skapa en normal lista, uttrycket kommer att köras för alla element.

Listförståelser är mycket användbara i datavetenskap, där man läser listor / filtrerar kolumnnamn / tar bort objekt från listor etc. Även om vi kan använda slingor och lambda-funktioner för att utföra vissa åtgärder, ger listförståelse ett elegant och enkelt sätt att representera samma.
Listförståelser kan användas för att ersätta kartor (), reducera () och filter () metoder.
Listförståelse är som Set Theory från gymnasiet.

Exempel:

( x: x is a natural number greater than 15 )
( x: x is a vowel in word 'Data Science', x is a vowel )

Låt oss skapa listförståelse för ovanstående två uttalanden.

(x for x in range(0, 20) if x>15) (x for x in 'Data Science' if x in ('a', 'e', 'i', 'o', 'u'))

Produktion:

(16, 17, 18, 19) ('a', 'a', 'i', 'e', ​​'e')

Listförståelser är lätta att förstå och implementera. I grund och botten skapas dessa på bord. Det finns tre saker att tänka på när du skriver syntaxen för listeförståelser.

  1. Parameter för utgång
  2. Det iterable
  3. Betingelser

Syntaxen kan ha två av ovanstående eller 3 av ovanstående som en syntax för listförståelse.

Syntax:

(output parameter | The Iterable)
(output Parameter | The Iterable | Condition )

Exempel på Python List Förståelse

Här kommer vi att diskutera hur man använder listförståelse med python. Vi kommer att se exemplen på ett annat sätt eftersom vi kör det med hjälp av loop och sedan skapar vi samma med listförståelser.

Exempel 1: Hitta de perfekta rutorna

Här är exempel på perfekta rutor med olika förhållanden nedan:

1. Med för Loop

for i in range(1, 30):
if int(i**0.5)==i**0.5:
print(i)

2. Använda listförståelser

(x for x in range(1, 30) if int(x**0.5)==x**0.5)

Produktion:

Exempel 2: Få endast konsonanter från en mening

Här tar vi en godtycklig mening och vi försöker få konsonanter i meningen som vår utgång.

1. Använd för loop

def consonants_for(sentence):
vowels = 'aeiou'
consonants = () for x in sentence:
if x not in vowels:
consonants.append(x)
return ''.join(consonants)
sentence = 'we are studying list comprehensions'
print("With For Loop : " + consonants_for(sentence))

Produktion:

With For Loop: wr stdyng lst cmprhnsns

2. Använd listförståelse

def consonants_lc(sentence):
vowels = 'aeiou'
return ''.join(( x for x in sentence if x not in vowels))
sentence = 'we are studying list comprehensions'
print("Using List Compr: " + consonants_lc(sentence))

Produktion:

Använda lista Compr: wr stdyng lst cmprhnsns

Exempel 3: Skapa en ordlista från två, till skillnad från listor

Här är exempel på ordbok med olika villkor som anges nedan:

1. Använd för loop

def dict_for(keys, values):
dictionary = ()
for i in range(len(keys)):
dictionary(keys(i)) = values(i) return dictionary
Movie = ('RDB', 'Wanted', 'DDLG', 'Sholay', 'War', ) Actor = ('Aamire', 'Salman', 'SRK', 'Amitabh', 'Hritik') print("FOR-loop result: " + str(dict_for(Movie, Actor)))

Produktion:

FOR-loop-resultat: ('RDB': 'Aamire', 'Wanted': 'Salman', 'DDLG': 'SRK', 'Sholay': 'Amitabh', 'War': 'Hritik')

2. Använd listförståelse

def dict_lc(keys, values):
return ( keys(i) : values(i) for i in range(len(keys)) )
Movie = ('RDB', 'Wanted', 'DDLG', 'Sholay', 'War', ) Actor = ('Aamire', 'Salman', 'SRK', 'Amitabh', 'Hritik') print("LC result : " + str(dict_lc(Movie, Actor)))

Produktion:

LC-resultat: ('RDB': 'Aamire', 'Wanted': 'Salman', 'DDLG': 'SRK', 'Sholay': 'Amitabh', 'War': 'Hritik')

Fördelarna med Python Listförståelse

Listförståelser utför samma uppgift, men på ett annat sätt!

Listförståelse har många fördelar jämfört med loopen och andra metoder. Några av fördelarna är följande:

  1. Listförståelser är enkla att förstå och göra koden elegant. Vi kan skriva programmet med enkla uttryck.
  2. Listförståelser är mycket snabbare än för loopar och andra metoder som en karta. (Samma förklaras i nedanstående exempel:

Vi tar exempel 1 för referens och vi kommer att beräkna den tid det tar med olika metoder för att utföra samma funktion. Först kommer vi att se tiden för "for loop" och sedan tar tiden med en karta () -metod och äntligen kommer vi att se tiden som listförståelser tar.

En tabell visar tiden för de olika teknikerna.

1. För Loop

Exempel med hjälp av slinga som anges nedan:

Koda:

def perf_square(x):
output = () for i in x:
if int(i**0.5)==i**0.5:
output.append(i)
return output
%timeit perf_square(range(1, 30))

2. Kartmetod

Exempel med hjälp av kartmetoden nedan:

Koda:

def perf_square_map(x):
return map(lambda i: i**0.5==i**0.5, x)
%timeit perf_square_map(range(1, 30))

3. Lista förståelser

Exempel med hjälp av listförståelsen nedan:

Koda:

def perf_square_lc(x):
return (i**0.5 == i**0.5 for i in x) %timeit perf_square_lc(range(1, 30))

Produktion:

MetodTid
För slinga787 ns
Metod för karta ()518 ns
Lista förståelser276 ns

Det är tydligt att tiden för listförståelse är 2, 85 gånger snabbare än för slingan och 1, 87 gånger snabbare än kartmetoden. Listförståelser lämnar efter sig andra metoder med stor marginal. Det kan finnas spekulationer, varför använder vi inte bara LC på alla platser och inte slingor? LC är snabbare i de flesta fall och kan ersätta slingor i nästan 80% fall. Men vi kan inte ersätta slingor, det finns vissa fall där vi har ett bra antal villkor och klasser är kapslade i en slinga. I dessa fall kan användning av LC vara ganska besvärligt och inte genomförbart. Det är bättre att gå efter öglor i sådana situationer. Även om man kan använda Listförståelse för slingor för att ersätta andra för slingor. Det kommer att minska körtiden och bibehålla användarvänligheten för koden.

  • Vi kan häcka flera villkor i en listaförståelse.
  • LC kan utföra flera variabla manipulationer.
  • Det finns inget behov att tillhandahålla ett separat kommando för att få utdata.
  • Listförståelser minskar kodens komplexitet.
  • Listförståelser är effektiva.

Slutsats

Listförståelser används för att skapa listor från den iterativa processen. Listförståelser är enkla att förstå / implementera och gör koden elegant. Listförståelser är kompakta och användarvänliga.

Vi har diskuterat syntax för listförståelser tillsammans med några bra insiktsfulla exempel. Till sist skrev vi ett program för att få tidpunkten för varje metod. Vi drog slutsatsen att LC är 2, 85 gånger snabbare än för slinga och 1, 87 gånger snabbare än kartmetoden ().

Rekommenderade artiklar

Detta är en guide till Python List Comprehension. Här diskuterar vi fördelarna med pythonlistförståelsen tillsammans med syntaxen och exempel med olika förhållanden. Du kan också titta på följande artiklar för att lära dig mer-

  1. Konstruktör i Java
  2. Sorterar i Java
  3. Konstruktör i Java
  4. JCheckBox i Java
  5. Guide till sortering i C # med exempel
  6. Sorteringsfunktion i Python med exempel
  7. Loops i VBScript med exempel
  8. Exempel på Implementera kryssrutan i Bootstrap

Kategori: