logo

Resta llistes de cadenes en Python

A Python, una cadena és una seqüència de caràcters i una llista és una col·lecció d'elements que poden ser de qualsevol tipus de dades, incloses les cadenes. Resta d'una llista de cadenes implica eliminar elements que són comuns entre dos llistes o cordes .

Per restar una llista de cadenes d'una altra, podeu utilitzar el 'conjunt' tipus de dades en Python. El tipus de dades conjunt és una col·lecció no ordenada d'elements únics. L'operador de resta '-' es pot utilitzar entre dos conjunts per trobar els elements del primer conjunt que no estan presents al segon conjunt.

Exemple:

Aquí teniu un exemple de resta d'una llista de cadenes d'una altra utilitzant el tipus de dades establert:

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

Sortida:

 ['apple', 'cherry'] 

A l'exemple anterior, definim dues llistes, 'full 1' i 'llista2' . Després d'això, convertim cada llista en un conjunt utilitzant el 'conjunt' funció en Python. Després d'això, fem servir el '-' operador per restar els elements de 'llista2' des de 'full 1' . Finalment, tornem a convertir el conjunt resultant en una llista utilitzant el 'llista' funció en Python.

Això dóna lloc a una nova llista 'resultat' que conté els elements de 'full 1' que no hi són presents 'llista2' , que en aquest cas són 'poma' i 'cirera' .

apilar en java

Exemple:

Aquí hi ha un altre exemple que mostra com restar una llista de cadenes d'una sola cadena:

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

Sortida:

 'He wr!' 

A l'exemple anterior, definim una cadena 'cadena1' i una llista de cadenes 'full 1' . Després d'això, fem servir una llista de comprensió per iterar sobre cada caràcter 'cadena1' i comproveu si hi és present 'full 1' . Si el personatge no hi és 'full 1' , l'afegim a una llista nova utilitzant el 'unir-se' mètode. Finalment, tornem a convertir la llista resultant en una cadena.

Això dóna lloc a una nova cadena 'resultat' que conté només els caràcters de 'cadena1' que no hi són presents 'full 1' , que en aquest cas són 'H', 'e', ​​​​' ', 'w' , i 'r' .

Val la pena assenyalar que l'ordre dels elements de la llista o cadena resultant pot no ser preservat. Si necessiteu conservar l'ordre, podeu utilitzar una llista de comprensió amb un 'si' declaració per filtrar els elements que estan presents a la segona llista.

Exemple:

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

Sortida:

 ['apple', 'cherry'] 

A l'exemple anterior, definim dues llistes, 'full 1' i 'llista2' . Després d'això, fem servir una llista de comprensió per iterar sobre cada element 'full 1' i comproveu si hi és present 'llista2' . Si l'element no està dins 'llista2' , l'afegim a una llista nova. Finalment, imprimim la llista resultant, que conté els elements de 'full 1' que no hi són presents 'llista2' .

Alguna altra informació:

Tipus de dades de conjunt i llista:

Com s'ha esmentat anteriorment, en restar llistes de cadenes, es recomana convertir les llistes en conjunts. És perquè els conjunts estan optimitzats per comprovar l'existència d'elements i eliminar duplicats. Tanmateix, si conservar l'ordre dels elements és important, potser serà millor utilitzar una comprensió de llista.

Consideracions de rendiment:

Convertir llistes en conjunts pot ser una operació costosa des del punt de vista computacional, especialment per a llistes grans. Si el rendiment és un problema, potser voldreu considerar l'ús d'enfocaments alternatius com ara la comprensió de llistes o una expressió generadora.

Mutabilitat:

És important tenir en compte que els conjunts ho són mutable , mentre cordes i tuples (que també es poden utilitzar com a tipus de dades iterables) no ho són. Vol dir que quan resteu un conjunt d'un altre conjunt, el conjunt resultant ho és mutable , i podeu modificar-ne el contingut. D'altra banda, en restar una llista o tupla d'una altra llista o tupla, la llista o tupla resultant no és mutable i no pots modificar-ne el contingut.

Llistes imbricades:

Si esteu treballant amb llistes imbricades, és possible que hàgiu d'utilitzar un bucle imbricat o recursivitat per restar una llista d'una altra. Aquí teniu un exemple:

 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) 

Sortida:

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

A l'exemple anterior, definim dues llistes imbricades, 'full 1' i 'llista2' . Després d'això, fem servir un bucle for per iterar sobre cada parell de subllistes 'full 1' i 'llista2' . Utilitzem una comprensió de llista per restar els elements de cada subllista 'llista2' de la subllista corresponent a ' fulla 1' . Finalment, afegim les subllistes resultants a una llista nova 'resultat' .