logo

Træk strenglister fra i Python

I Python er en streng en sekvens af tegn, og en liste er en samling af elementer, der kan være af enhver datatype, inklusive strenge. Subtraktion af en strengliste involverer fjernelse af elementer, der er fælles for to lister eller strenge .

For at trække en strengliste fra en anden, kan du bruge 'sæt' datatype i Python. Den indstillede datatype er en uordnet samling af unikke elementer. Subtraktionsoperatøren '-' kan bruges mellem to sæt til at finde de elementer i det første sæt, som ikke er til stede i det andet sæt.

vijay filmskuespiller

Eksempel:

Her er et eksempel på at trække en strengliste fra en anden ved hjælp af den indstillede datatype:

 list1 = ['apple', 'banana', 'cherry', 'orange'] list2 = ['banana', 'orange', 'kiwi'] result = list(set(list1) - set(list2)) print(result) 

Produktion:

 ['apple', 'cherry'] 

I eksemplet ovenfor definerer vi to lister, 'ark1' og 'list2' . Derefter konverterer vi hver liste til et sæt ved hjælp af 'sæt' funktion i Python. Derefter bruger vi '-' operatør at trække elementerne fra 'list2' fra 'ark1' . Til sidst konverterer vi det resulterende sæt tilbage til en liste ved hjælp af 'liste' funktion i Python.

Dette resulterer i en ny liste 'resultat' der indeholder elementer af 'ark1' der ikke er til stede i 'list2' , som i dette tilfælde er 'æble' og 'kirsebær' .

Eksempel:

Her er et andet eksempel, der viser, hvordan man trækker en liste over strenge fra en enkelt streng:

 string1 = 'Hello world!' list1 = ['o', 'l', 'd'] result = ''.join([char for char in string1 if char not in list1]) print(result) 

Produktion:

 'He wr!' 

I eksemplet ovenfor definerer vi en streng 'streng1' og en liste over strenge 'ark1' . Derefter bruger vi en listeforståelse til at iterere over hvert tegn i 'streng1' og tjek om det er til stede i 'ark1' . Hvis karakteren ikke er med 'ark1' , føjer vi det til en ny liste ved hjælp af 'tilslutte' metode. Til sidst konverterer vi den resulterende liste tilbage til en streng.

Dette resulterer i en ny streng 'resultat' der kun indeholder tegnene fra 'streng1' der ikke er til stede i 'ark1' , som i dette tilfælde er 'H', 'e', ​​'' ', 'w' , og 'r' .

Det er værd at bemærke, at rækkefølgen af ​​elementerne i den resulterende liste eller streng muligvis ikke bevares. Hvis du skal bevare rækkefølgen, kan du bruge en listeforståelse med en 'hvis' sætning for at bortfiltrere de elementer, der er til stede i den anden liste.

hvordan man henter game pigeon på Android

Eksempel:

 list1 = ['apple', 'banana', 'cherry', 'orange'] list2 = ['banana', 'orange', 'kiwi'] result = [item for item in list1 if item not in list2] print(result) 

Produktion:

 ['apple', 'cherry'] 

I eksemplet ovenfor definerer vi to lister, 'ark1' og 'list2' . Derefter bruger vi en listeforståelse til at iterere over hvert element i 'ark1' og tjek om det er til stede i 'list2' . Hvis elementet ikke er i 'list2' , føjer vi det til en ny liste. Til sidst udskriver vi den resulterende liste, som indeholder elementerne af 'ark1' der ikke er til stede i 'list2' .

Nogle andre oplysninger:

Indstil vs listedatatyper:

Som nævnt tidligere, når man trækker strenglister fra, anbefales det at konvertere listerne til sæt. Det er fordi sæt er optimeret til at kontrollere for eksistensen af ​​elementer og fjerne dubletter. Men hvis det er vigtigt at bevare rækkefølgen af ​​elementerne, så kan det være bedre at bruge en listeforståelse i stedet for.

Overvejelser om ydeevne:

Konvertering af lister til sæt kan være en beregningsmæssigt dyr operation, især for store lister. Hvis ydeevne er et problem, kan du overveje at bruge alternative tilgange såsom listeforståelse eller et generatorudtryk.

Foranderlighed:

Det er vigtigt at bemærke, at sæt er foranderlig , mens strenge og tupler (som også kan bruges som iterable datatyper) er det ikke. Det betyder, at når du trækker et sæt fra et andet sæt, er det resulterende sæt foranderlig , og du kan ændre dens indhold. På den anden side, når du trækker en liste eller tuple fra en anden liste eller tuple, kan den resulterende liste eller tuple ikke ændres, og du kan ikke ændre dens indhold.

er kat timpf advokat

Indlejrede lister:

Hvis du arbejder med indlejrede lister, skal du muligvis bruge en indlejret løkke eller rekursion for at trække en liste fra en anden. Her er et eksempel:

 list1 = [['apple', 'banana'], ['cherry', 'orange']] list2 = [['banana', 'kiwi'], ['cherry', 'pear']] result = [] for sublist1, sublist2 in zip(list1, list2): subresult = [item for item in sublist1 if item not in sublist2] result.append(subresult) print(result) 

Produktion:

 [['apple'], ['orange']] 

I ovenstående eksempel definerer vi to indlejrede lister, 'ark1' og 'list2' . Derefter bruger vi en for-løkke til at iterere over hvert par underlister i 'ark1' og 'list2' . Vi bruger en listeforståelse til at trække elementerne fra hver underliste fra 'list2' fra den tilsvarende underliste i ' blad1' . Til sidst tilføjer vi de resulterende underlister til en ny liste 'resultat' .