2012-05-12 15 views
6

मैं एक सूची है कहोअजगर, सूची में स्ट्रिंग की सभी घटनाओं को दूर

second_list = ['cheese', 'tomato'] 

और मैं सभी तत्वों को दूसरी सूची में पाए जाते हैं निकालना चाहते हैं मुख्य सूची से?

अग्रिम

एडम

+3

आदेश करता है मामला? – jamylak

उत्तर

7

में धन्यवाद क्रम महत्वपूर्ण नहीं है, तो आप sets उपयोग कर सकते हैं:

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

यहाँ हम चौराहे ऑपरेटर, & का उपयोग करें।

>>> set(main_array) - set(second_array) 
set(['cake', 'bacon', 'milk']) 
+0

अगर आदेश रखा जाना चाहिए तो यह काम नहीं करेगा। अन्यथा यह वास्तव में सबसे अच्छा समाधान है। हालांकि, मुझे लगता है कि वह उन तत्वों को * हटाना चाहता है, इसलिए '&' के बजाय '-' का उपयोग करें। – ThiefMaster

+1

@ थिफमास्टर - सच है, और 'मैं सभी तत्वों को सही नहीं करना चाहता' की व्याख्या नहीं की! – fraxel

11
new_array = [x for x in main_array if x not in second_array] 

बहरहाल, यह बड़ी सूचियों के लिए बहुत performant नहीं है: आप केवल अपने दूसरी सूची में नहीं मिला आइटम के इच्छुक हों, तो हम इस अंतर, - उपयोग कर सकते हैं। आप second_array के लिए एक सेट का उपयोग करके अनुकूलन कर सकते हैं:

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

वस्तुओं के आदेश कोई फर्क नहीं पड़ता, तो आप दोनों सरणियों के लिए एक सेट का उपयोग कर सकते हैं:

new_array = list(set(main_array) - set(second_array)) 
+0

मुझे प्यार है कि कैसे अभिव्यक्तिपूर्ण पायथन है :)। ऐसा लगता है कि आप अंग्रेजी बोल रहे हैं। – Vikas

+2

अच्छा जवाब, केवल मामूली जोड़: आप पहले सेट में 'second_array' को बदलकर ऑर्डर संरक्षित संस्करण को अनुकूलित कर सकते हैं: 'second_set = set (second_array); new_array = [x x_ में मुख्य_एरे में x अगर x सेकंड_सेट में नहीं है] ' – roskakori

2
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']) 
0
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'] 
संबंधित मुद्दे