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