logo

Sottrai elenchi di stringhe in Python

In Python, una stringa è una sequenza di caratteri e una lista è una raccolta di elementi che possono essere di qualsiasi tipo di dati, comprese le stringhe. Sottrazione di un elenco di stringhe comporta la rimozione di elementi comuni tra due elenchi O stringhe .

Per sottrarre un elenco di stringhe da un altro, è possibile utilizzare il comando 'impostato' tipo di dati in Python. Il tipo di dati impostato è una raccolta non ordinata di elementi univoci. L'operatore di sottrazione '-' può essere utilizzato tra due insiemi per trovare gli elementi del primo insieme che non sono presenti nel secondo insieme.

Esempio:

Ecco un esempio di sottrazione di un elenco di stringhe da un altro utilizzando il tipo di dati set:

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

Produzione:

confronto di stringhe C#
 ['apple', 'cherry'] 

Nell'esempio sopra, definiamo due elenchi, 'foglio1' E 'lista2' . Successivamente, convertiamo ogni elenco in un set utilizzando il file 'impostato' funzione in Python. Successivamente, utilizziamo il file '-' operatore per sottrarre gli elementi di 'lista2' da 'foglio1' . Infine, riconvertiamo il set risultante in un elenco utilizzando il comando 'elenco' funzione in Python.

Ciò si traduce in un nuovo elenco 'risultato' che contiene gli elementi di 'foglio1' che non sono presenti in 'lista2' , che in questo caso sono 'mela' E 'ciliegia' .

Esempio:

Ecco un altro esempio che mostra come sottrarre un elenco di stringhe da una singola stringa:

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

Produzione:

 'He wr!' 

Nell'esempio sopra, definiamo una stringa 'stringa1' e un elenco di stringhe 'foglio1' . Successivamente, utilizziamo una comprensione dell'elenco per scorrere ogni carattere in 'stringa1' e controlla se è presente 'foglio1' . Se il personaggio non è presente 'foglio1' , lo aggiungiamo a un nuovo elenco utilizzando il file 'giuntura' metodo. Infine, riconvertiamo l'elenco risultante in una stringa.

Ciò si traduce in una nuova stringa 'risultato' che contiene solo i caratteri di 'stringa1' che non sono presenti in 'foglio1' , che in questo caso sono 'H', 'e', ​​'' ', 'w' , E 'R' .

Vale la pena notare che l'ordine degli elementi nell'elenco o nella stringa risultante potrebbe non essere preservato. Se è necessario preservare l'ordine, è possibile utilizzare una comprensione dell'elenco con an 'Se' istruzione per filtrare gli elementi presenti nel secondo elenco.

forma completa pvr

Esempio:

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

Produzione:

 ['apple', 'cherry'] 

Nell'esempio sopra, definiamo due elenchi, 'foglio1' E 'lista2' . Successivamente, utilizziamo una comprensione delle liste per scorrere ogni elemento in 'foglio1' e controlla se è presente 'lista2' . Se l'elemento non è presente 'lista2' , lo aggiungiamo a un nuovo elenco. Infine, stampiamo l'elenco risultante, che contiene gli elementi di 'foglio1' che non sono presenti in 'lista2' .

ordinamento per inserimento Java

Alcune altre informazioni:

Tipi di dati Imposta o Elenco:

Come accennato in precedenza, quando si sottraggono elenchi di stringhe, si consiglia di convertire gli elenchi in insiemi. È perché i set sono ottimizzati per verificare l'esistenza di elementi e rimuovere i duplicati. Tuttavia, se è importante preservare l'ordine degli elementi, potrebbe essere meglio utilizzare una comprensione di elenco.

Considerazioni sulle prestazioni:

La conversione di elenchi in insiemi può essere un'operazione computazionalmente costosa, soprattutto per elenchi di grandi dimensioni. Se le prestazioni sono un problema, potresti prendere in considerazione l'utilizzo di approcci alternativi come la comprensione delle liste o un'espressione generatrice.

Mutabilità:

È importante notare che i set lo sono mutevole , mentre le stringhe e tuple (che possono anche essere utilizzati come tipi di dati iterabili) non lo sono. Significa che quando sottrai un insieme da un altro insieme, l'insieme risultante lo è mutevole e puoi modificarne il contenuto. D'altra parte, quando si sottrae una lista o tupla da un'altra lista o tupla, la lista o tupla risultante non è mutabile e non è possibile modificarne il contenuto.

Elenchi nidificati:

Se lavori con elenchi nidificati, potrebbe essere necessario utilizzare un ciclo nidificato o una ricorsione per sottrarre un elenco da un altro. Ecco un esempio:

 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) 

Produzione:

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

Nell'esempio sopra, definiamo due elenchi nidificati, 'foglio1' E 'lista2' . Successivamente, utilizziamo un ciclo for per scorrere ciascuna coppia di sottoliste 'foglio1' E 'lista2' . Usiamo una comprensione delle liste per sottrarre gli elementi di ciascuna sottolista 'lista2' dalla sottolista corrispondente in ' foglia1' . Infine, aggiungiamo le sottoliste risultanti a una nuova lista 'risultato' .