Python लिस्ट से कई सारे तत्वों को कुशलतापूर्वक हटाने के लिए आपको अपने तरीके पर सावधानीपूर्वक विचार करने की आवश्यकता होती है। सबसे उपयुक्त तरीका हटाने के मानदंड और लिस्ट के आकार पर निर्भर करता है। यह लेख चार सामान्य तकनीकों का पता लगाता है, उनकी ताकत और कमजोरियों को उजागर करता है।
विषयवस्तु की तालिका
- लिस्ट कॉम्प्रिहेंशन के साथ सशर्त निष्कासन
- स्लाइसिंग के साथ इंडेक्स रेंज द्वारा निष्कासन
- एक For लूप के साथ इन-प्लेस निष्कासन
filter
का उपयोग करके सशर्त निष्कासन
लिस्ट कॉम्प्रिहेंशन के साथ सशर्त निष्कासन
किसी शर्त के आधार पर तत्वों को हटाने के लिए लिस्ट कॉम्प्रिहेंशन एक सुंदर और अक्सर कुशल समाधान प्रदान करता है। यह केवल उन तत्वों वाली एक नई लिस्ट बनाता है जो शर्त को पूरा करते हैं, मूल लिस्ट को प्रभावी ढंग से फ़िल्टर करते हैं।
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
filtered_list = [item for item in my_list if item % 2 != 0]
print(f"मूल लिस्ट: {my_list}")
print(f"फ़िल्टर की गई लिस्ट (केवल विषम संख्याएँ): {filtered_list}")
यह संक्षेप में सम संख्याओं को हटाता है। लिस्ट कॉम्प्रिहेंशन के भीतर की शर्त को किसी भी मानदंड के लिए अनुकूलित किया जा सकता है।
स्लाइसिंग के साथ इंडेक्स रेंज द्वारा निष्कासन
लिस्ट स्लाइसिंग उनके इंडेक्स के आधार पर लिस्ट के सन्निहित अनुभागों को हटाने के लिए आदर्श है। यह इस विशिष्ट कार्य के लिए अत्यधिक कुशल है। हालाँकि, याद रखें कि स्लाइसिंग एक नई लिस्ट बनाता है; यह मूल को इन-प्लेस में संशोधित नहीं करता है।
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# इंडेक्स 2 से 4 (समावेशी) तक के तत्वों को हटाएँ
new_list = my_list[:2] + my_list[5:]
print(f"मूल लिस्ट: {my_list}")
print(f"तत्वों 2-4 को हटाने के बाद लिस्ट: {new_list}")
यह कुशलतापूर्वक इंडेक्स 2, 3 और 4 पर तत्वों को हटाता है।
एक For लूप के साथ इन-प्लेस निष्कासन
इन-प्लेस संशोधन (सीधे मूल लिस्ट को बदलना) के लिए, del
कीवर्ड के साथ एक for
लूप का उपयोग किया जा सकता है। महत्वपूर्ण रूप से, आगे पुनरावृति करते समय तत्वों को हटाने के कारण होने वाली इंडेक्स से संबंधित समस्याओं से बचने के लिए, उल्टे क्रम में पुनरावृति करें।
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for i in range(len(my_list) - 1, -1, -1):
if my_list[i] % 2 == 0:
del my_list[i]
print(f"मूल लिस्ट: {my_list}")
print(f"सम संख्याओं को हटाने के बाद लिस्ट (इन-प्लेस): {my_list}")
कार्यात्मक होने के बावजूद, यह दृष्टिकोण बड़ी सूचियों के लिए आमतौर पर लिस्ट कॉम्प्रिहेंशन से कम कुशल होता है।
filter
का उपयोग करके सशर्त निष्कासन
filter()
फ़ंक्शन सशर्त निष्कासन प्राप्त करने का एक और संक्षिप्त तरीका प्रदान करता है। यह अधिक जटिल फ़िल्टरिंग तर्क से निपटने में विशेष रूप से उपयोगी है।
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
filtered_list = list(filter(lambda x: x % 2 != 0, my_list))
print(f"मूल लिस्ट: {my_list}")
print(f"फ़िल्टर की गई लिस्ट (केवल विषम संख्याएँ): {filtered_list}")
यह उदाहरण संक्षिप्तता के लिए एक लैम्ब्डा फ़ंक्शन का उपयोग करता है, लेकिन आप किसी भी कॉल करने योग्य को प्रतिस्थापित कर सकते हैं जो प्रत्येक तत्व के लिए True
या False
देता है।
संक्षेप में, सबसे अच्छा तरीका आपकी विशिष्ट आवश्यकताओं पर निर्भर करता है। लिस्ट कॉम्प्रिहेंशन सशर्त निष्कासन में उत्कृष्टता प्राप्त करता है, स्लाइसिंग कुशलतापूर्वक इंडेक्स-आधारित निष्कासन को संभालता है, और del
के साथ for
लूप इन-प्लेस संशोधन प्रदान करता है (हालांकि कम कुशलता से)। filter()
जटिल स्थितियों के लिए एक कार्यात्मक विकल्प प्रदान करता है। अपनी स्थिति के लिए दक्षता और कोड पठनीयता के बीच सबसे अच्छा संतुलन प्रदान करने वाली विधि चुनें।