यदि किसी ऑब्जेक्ट से मेल खाता है तो मैं किसी सूची से तत्व को कैसे हटा सकता हूं?किसी ऑब्जेक्ट से मेल खाने वाली सूची से किसी आइटम को निकालना - पायथन
मैं सूची में से एक तत्व को हटाने pop()
और enumerate
विधि का उपयोग कर की कोशिश की लेकिन लगता है कि मैं कुछ सन्निहित आइटम कि निकाल दिया जाना चाहिए याद कर रहा हूँ:
sents = ['@$\tthis sentences needs to be removed', 'this doesnt',
'@$\tthis sentences also needs to be removed',
'@$\tthis sentences must be removed', 'this shouldnt',
'# this needs to be removed', 'this isnt',
'# this must', 'this musnt']
for i, j in enumerate(sents):
if j[0:3] == "@$\t":
sents.pop(i)
continue
if j[0] == "#":
sents.pop(i)
for i in sents:
print i
आउटपुट:
this doesnt
@$ this sentences must be removed
this shouldnt
this isnt
#this should
this musnt
वांछित उत्पादन:
this doesnt
this shouldnt
this isnt
this musnt
उस सूची में आइटम भरने पर आइटम को निकालने का क्लासिक केस। इस से संबंधित अन्य स्टैक ओवरफ़्लो प्रश्नों के दर्जनों पढ़ें। साथ ही, [दस्तावेज़ों में नोट] देखें (http://docs.python.org/reference/compound_stmts.html#for)। –
आपको हमेशा इसके माध्यम से एक कंटेनर की लंबाई बदलने से बचना चाहिए, यह आपदा – wim
के लिए एक नुस्खा है आम तौर पर, जगह में एक सूची को संशोधित करने की कोशिश करने के बजाय आमतौर पर एक नई फ़िल्टर सूची बनाने के लिए बेहतर होता है। अपरिवर्तनीय एल्गोरिदम हमेशा कारणों से आसान होते हैं (हालांकि लिखने के लिए हमेशा आसान नहीं होता है)। जब आप मूल्यों को प्रतिस्थापित कर रहे होते हैं, तो कभी-कभी काम करने की कार्यक्षमता लाभ उस हरा को हराता है, लेकिन जब आप किसी सूची के बीच में हटाना या डालना चाहते हैं, तो आप आमतौर पर अपने कम मजबूत तर्क के साथ _worse_ दक्षता प्राप्त कर रहे हैं। – abarnert