logo

Trekk fra strenglister i Python

I Python er en streng en sekvens av tegn, og en liste er en samling av elementer som kan være av hvilken som helst datatype, inkludert strenger. Subtraksjon av en strengliste innebærer å fjerne elementer som er felles mellom to lister eller strenger .

For å trekke en strengliste fra en annen, kan du bruke 'sett' datatype i Python. Den angitte datatypen er en uordnet samling av unike elementer. Subtraksjonsoperatøren '-' kan brukes mellom to sett for å finne elementene i det første settet som ikke finnes i det andre settet.

java-bryter

Eksempel:

Her er et eksempel på å trekke en strengliste fra en annen ved å bruke den angitte datatypen:

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

Produksjon:

 ['apple', 'cherry'] 

I eksemplet ovenfor definerer vi to lister, 'ark1' og 'liste2' . Etter det konverterer vi hver liste til et sett ved å bruke 'sett' funksjon i Python. Etter det bruker vi '-' operatør å trekke fra elementene i 'liste2' fra 'ark1' . Til slutt konverterer vi det resulterende settet tilbake til en liste ved hjelp av 'liste' funksjon i Python.

Dette resulterer i en ny liste 'resultat' som inneholder elementene i 'ark1' som ikke er til stede i 'liste2' , som i dette tilfellet er 'eple' og 'kirsebær' .

Eksempel:

Her er et annet eksempel som viser hvordan du trekker en liste med strenger 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) 

Produksjon:

 'He wr!' 

I eksemplet ovenfor definerer vi en streng 'string1' og en liste over strenger 'ark1' . Etter det bruker vi en listeforståelse for å iterere over hvert tegn i 'string1' og sjekk om den er tilstede 'ark1' . Hvis karakteren ikke er med 'ark1' , legger vi den til i en ny liste ved å bruke 'bli med' metode. Til slutt konverterer vi den resulterende listen tilbake til en streng.

Dette resulterer i en ny streng 'resultat' som bare inneholder tegnene til 'string1' som ikke finnes i 'ark1' , som i dette tilfellet er 'H', 'e', ​​'' ', 'w' , og 'r' .

Det er verdt å merke seg at rekkefølgen på elementene i den resulterende listen eller strengen kanskje ikke blir bevart. Hvis du trenger å bevare rekkefølgen, kan du bruke en listeforståelse med en 'hvis' setning for å filtrere ut elementene som finnes i den andre listen.

hvordan får du 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) 

Produksjon:

 ['apple', 'cherry'] 

I eksemplet ovenfor definerer vi to lister, 'ark1' og 'liste2' . Etter det bruker vi en listeforståelse for å iterere over hvert element i 'ark1' og sjekk om den er tilstede 'liste2' . Hvis elementet ikke er inne 'liste2' , legger vi den til i en ny liste. Til slutt skriver vi ut den resulterende listen, som inneholder elementene i 'ark1' som ikke er til stede i 'liste2' .

Litt annen informasjon:

Sett kontra listedatatyper:

Som nevnt tidligere, når du trekker fra strenglister, anbefales det å konvertere listene til sett. Det er fordi sett er optimalisert for å sjekke om det finnes elementer og fjerne duplikater. Men hvis det er viktig å bevare rekkefølgen på elementene, kan det være bedre å bruke en listeforståelse i stedet.

Ytelseshensyn:

Konvertering av lister til sett kan være en beregningsmessig kostbar operasjon, spesielt for store lister. Hvis ytelse er et problem, kan det være lurt å vurdere å bruke alternative tilnærminger som listeforståelse eller et generatoruttrykk.

Mulighet:

Det er viktig å merke seg at sett er foranderlig , mens strenger og tupler (som også kan brukes som iterable datatyper) er det ikke. Det betyr at når du trekker et sett fra et annet sett, er det resulterende settet foranderlig , og du kan endre innholdet. På den annen side, når du trekker en liste eller tuppel fra en annen liste eller tuppel, kan ikke den resulterende listen eller tuppelen endres, og du kan ikke endre innholdet.

hvordan lukke utviklermodus

Nestede lister:

Hvis du jobber med nestede lister, må du kanskje bruke en nestet sløyfe eller rekursjon for å trekke en liste fra en annen. 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) 

Produksjon:

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

I eksemplet ovenfor definerer vi to nestede lister, 'ark1' og 'liste2' . Etter det bruker vi en for-løkke for å iterere over hvert par med underlister i 'ark1' og 'liste2' . Vi bruker en listeforståelse for å trekke fra elementene i hver underliste 'liste2' fra den tilsvarende underlisten i ' blad1' . Til slutt legger vi de resulterende underlistene til en ny liste 'resultat' .