Python, entfernen Sie alle Vorkommen von String in Liste

Sagen, ich habe eine Liste:

main_list = ['bacon', 'cheese', 'milk', 'cake', 'tomato'] 

Und eine andere Liste:

 second_list = ['cheese', 'tomato'] 

Und ich möchte alle Elemente entfernen, die in der zweiten Liste gefunden werden, aus der Hauptliste?

Vielen Dank im Voraus

Adam

4 Solutions collect form web for “Python, entfernen Sie alle Vorkommen von String in Liste”

Wenn die Bestellung nicht wichtig ist, können Sie Sets verwenden :

 >>> main_array = ['bacon', 'cheese', 'milk', 'cake', 'tomato'] >>> second_array = ['cheese', 'tomato'] >>> set(main_array) & set(second_array) set(['tomato', 'cheese']) 

Hier verwenden wir den Kreuzungsoperator & . Sollten Sie nur Artikel nicht in Ihrer zweiten Liste finden, können wir den Unterschied verwenden, - :

 >>> set(main_array) - set(second_array) set(['cake', 'bacon', 'milk']) 
 new_array = [x for x in main_array if x not in second_array] 

Allerdings ist dies für große Listen nicht sehr performant. Sie können mit einem Satz für second_array optimieren:

 second_array = set(second_array) new_array = [x for x in main_array if x not in second_array] 

Wenn die Reihenfolge der Artikel egal ist, können Sie einen Satz für beide Arrays verwenden:

 new_array = list(set(main_array) - set(second_array)) 
 main_array = set(['bacon', 'cheese', 'milk', 'cake', 'tomato']) second_array = (['cheese', 'tomato']) main_array.difference(second_array) >>> set(['bacon', 'cake', 'milk']) main_array.intersection(second_array) >>> set(['cheese', 'tomato']) 
 l = [u'SQOOP', u'SOLR', u'SLIDER', u'SFTP', u'PIG', u'NODEMANAGER', u'JSQSH', u'HCAT', u'HBASE_REGIONSERVER', u'GANGLIA_MONITOR', u'FLUME_HANDLER', u'DATANODE', u'BIGSQL_WORKER'] p = [u'SQOOP', u'SOLR', u'SLIDER', u'SFTP'] l = [i for i in l if i not in [j for j in p]] print l [u'PIG', u'NODEMANAGER', u'JSQSH', u'HCAT', u'HBASE_REGIONSERVER', u'GANGLIA_MONITOR', u'FLUME_HANDLER', u'DATANODE', u'BIGSQL_WORKER'] 
  • Python-String auf Unicode
  • Prüfen, ob ein String mit XXXX beginnt
  • Löschen von bestimmten Steuerzeichen (\ n \ r \ t) aus einer Zeichenfolge
  • Strings mit zwei Buchstaben und fester Länge
  • Schleife durch jedes Element der Liste
  • Wie bekomme ich schon in einem String?
  • Ein guter Weg, um lange Strings wickeln zu Newline in Python?
  • Wie lösche ich alles nach einem bestimmten Zeichen in einer Zeichenfolge?
  • Sprintf wie Funktionalität in Python
  • Kombinieren von zwei Listen zu string [duplicate]
  • Konvertieren von Bytes in eine Python-Zeichenfolge
  • Python ist die beste Programmiersprache der Welt.