logo

Scăderea listelor de șiruri în Python

În Python, un șir este o secvență de caractere, iar o listă este o colecție de elemente care pot fi de orice tip de date, inclusiv șiruri. Scădere a unei liste de șiruri implică eliminarea elementelor care sunt comune între două liste sau siruri de caractere .

Pentru a scădea o listă de șiruri din alta, puteți utiliza 'a stabilit' tip de date în Python. Tipul de date set este o colecție neordonată de elemente unice. Operatorul de scădere '-' poate fi folosit între două seturi pentru a găsi elementele din primul set care nu sunt prezente în al doilea set.

Exemplu:

Iată un exemplu de scădere a unei liste de șiruri din alta folosind tipul de date setat:

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

Ieșire:

 ['apple', 'cherry'] 

În exemplul de mai sus, definim două liste, „foaia1” și 'list2' . După aceea, convertim fiecare listă într-un set folosind 'a stabilit' funcție în Python. După aceea, folosim '-' operator pentru a scădea elementele din 'list2' din „foaia1” . În cele din urmă, convertim setul rezultat înapoi într-o listă folosind 'listă' funcție în Python.

Rezultă o nouă listă 'rezultat' care contine elementele de „foaia1” care nu sunt prezente în 'list2' , care în acest caz sunt 'măr' și 'cireașă' .

Exemplu:

Iată un alt exemplu care arată cum să scazi o listă de șiruri dintr-un singur șir:

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

Ieșire:

 'He wr!' 

În exemplul de mai sus, definim un șir „string1” și o listă de șiruri „foaia1” . După aceea, folosim o listă de înțelegere pentru a repeta fiecare caracter în „string1” și verificați dacă este prezent în „foaia1” . Dacă personajul nu este în „foaia1” , îl adăugăm la o nouă listă folosind 'a te alatura' metodă. În cele din urmă, convertim lista rezultată înapoi într-un șir.

Rezultă un șir nou 'rezultat' care conține doar caracterele lui „string1” care nu sunt prezente în „foaia1” , care în acest caz sunt 'H', 'e', ​​​​' ', 'w' , și 'r' .

Este de remarcat faptul că ordinea elementelor din lista sau șirul rezultat poate să nu fie păstrată. Dacă trebuie să păstrați ordinea, puteți utiliza o listă de înțelegere cu un 'dacă' declarație pentru a filtra elementele care sunt prezente în a doua listă.

Exemplu:

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

Ieșire:

 ['apple', 'cherry'] 

În exemplul de mai sus, definim două liste, „foaia1” și 'list2' . După aceea, folosim o listă de înțelegere pentru a repeta fiecare element în „foaia1” și verificați dacă este prezent în 'list2' . Dacă elementul nu este în 'list2' , îl adăugăm la o nouă listă. În cele din urmă, tipărim lista rezultată, care conține elementele lui „foaia1” care nu sunt prezente în 'list2' .

învățare automată supravegheată

Alte informatii:

Tipuri de date Set vs List:

După cum am menționat mai devreme, la scăderea listelor de șiruri, se recomandă convertirea listelor în seturi. Se datorează faptului că seturile sunt optimizate pentru a verifica existența elementelor și pentru a elimina duplicatele. Cu toate acestea, dacă păstrarea ordinii elementelor este importantă, atunci ar putea fi mai bine să utilizați în schimb o listă de înțelegere.

Considerații de performanță:

Convertirea listelor în seturi poate fi o operație costisitoare din punct de vedere al calculului, în special pentru listele mari. Dacă performanța este o problemă, poate doriți să luați în considerare utilizarea unor abordări alternative, cum ar fi înțelegerea listei sau o expresie generatoare.

Mutabilitate:

Este important să rețineți că seturile sunt mutabil , în timp ce șiruri și tupluri (care pot fi utilizate și ca tipuri de date iterabile) nu sunt. Înseamnă că atunci când scazi o mulțime dintr-o altă mulțime, mulțimea rezultată este mutabil , și îi puteți modifica conținutul. Pe de altă parte, atunci când scădeți o listă sau un tuplu dintr-o altă listă sau tuplu, lista sau tuplul rezultat nu este mutabil și nu puteți modifica conținutul acesteia.

Liste imbricate:

Dacă lucrați cu liste imbricate, poate fi necesar să utilizați o buclă imbricată sau recursivitate pentru a scădea o listă din alta. Iată un exemplu:

 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) 

Ieșire:

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

În exemplul de mai sus, definim două liste imbricate, „foaia1” și 'list2' . După aceea, folosim o buclă for pentru a itera fiecare pereche de subliste în „foaia1” și 'list2' . Folosim o listă de înțelegere pentru a scădea elementele fiecărei subliste din 'list2' din sublista corespunzătoare din ' frunza1' . În cele din urmă, anexăm sublistele rezultate la o nouă listă 'rezultat' .