मैं एक सूची है कहोअजगर, सूची में स्ट्रिंग की सभी घटनाओं को दूर
second_list = ['cheese', 'tomato']
और मैं सभी तत्वों को दूसरी सूची में पाए जाते हैं निकालना चाहते हैं मुख्य सूची से?
अग्रिम
एडम
मैं एक सूची है कहोअजगर, सूची में स्ट्रिंग की सभी घटनाओं को दूर
second_list = ['cheese', 'tomato']
और मैं सभी तत्वों को दूसरी सूची में पाए जाते हैं निकालना चाहते हैं मुख्य सूची से?
अग्रिम
एडम
में धन्यवाद क्रम महत्वपूर्ण नहीं है, तो आप 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'])
अगर आदेश रखा जाना चाहिए तो यह काम नहीं करेगा। अन्यथा यह वास्तव में सबसे अच्छा समाधान है। हालांकि, मुझे लगता है कि वह उन तत्वों को * हटाना चाहता है, इसलिए '&' के बजाय '-' का उपयोग करें। – ThiefMaster
@ थिफमास्टर - सच है, और 'मैं सभी तत्वों को सही नहीं करना चाहता' की व्याख्या नहीं की! – fraxel
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))
मुझे प्यार है कि कैसे अभिव्यक्तिपूर्ण पायथन है :)। ऐसा लगता है कि आप अंग्रेजी बोल रहे हैं। – Vikas
अच्छा जवाब, केवल मामूली जोड़: आप पहले सेट में 'second_array' को बदलकर ऑर्डर संरक्षित संस्करण को अनुकूलित कर सकते हैं: 'second_set = set (second_array); new_array = [x x_ में मुख्य_एरे में x अगर x सेकंड_सेट में नहीं है] ' – roskakori
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']
आदेश करता है मामला? – jamylak