पायथन सूचियों (सरणी) के विशिष्ट तत्वों को निकालें, बदलें और बदलें

व्यापार

मौजूदा सूची (सरणी) के केवल उन तत्वों को निकालने या हटाकर पायथन में एक नई सूची उत्पन्न करने के लिए जो कुछ शर्तों को पूरा करते हैं, या प्रतिस्थापन या रूपांतरण करके, सूची समझ का उपयोग करते हैं।

नमूना कोड के साथ निम्नलिखित को यहां समझाया गया है।

  • सूची बोध संकेतन का मूल रूप
  • सूची के सभी तत्वों पर प्रक्रिया लागू करें
  • मानदंडों को पूरा करने वाले तत्वों को सूची से निकालें और हटाएं
  • सूची की शर्तों को पूरा करने वाले तत्वों को बदलें या बदलें

स्ट्रिंग्स की सूचियों के विशिष्ट उदाहरणों के लिए निम्न आलेख देखें।

उन तत्वों को बेतरतीब ढंग से निकालना भी संभव है जो मानदंडों को पूरा नहीं करते हैं।

ध्यान दें कि सूचियां विभिन्न प्रकार के डेटा को स्टोर कर सकती हैं और सरणियों से बिल्कुल अलग हैं। यदि आप उन प्रक्रियाओं में सरणियों को संभालना चाहते हैं जिनके लिए स्मृति आकार और स्मृति पते या बड़े डेटा की संख्यात्मक प्रसंस्करण की आवश्यकता होती है, तो सरणी (मानक पुस्तकालय) या NumPy का उपयोग करें।

निम्नलिखित सूची एक उदाहरण है

l = list(range(-5, 6))
print(l)
# [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5]

सूची बोध संकेतन का मूल रूप

सूची से एक नई सूची बनाते समय, लूप की तुलना में सूची की समझ को लिखना आसान होता है।

[expression for any variable name in iterable object if conditional expression]

एक अभिव्यक्ति एक तत्व पर लागू होती है जो एक पुनरावृत्त वस्तु (जैसे एक सूची या टपल) की सशर्त अभिव्यक्ति को संतुष्ट करती है और एक नई सूची का एक तत्व बन जाती है। “अगर सशर्त अभिव्यक्ति” को छोड़ा जा सकता है, तो उस स्थिति में अभिव्यक्ति सभी तत्वों पर लागू होती है।

नेस्टेड सूची समझ संकेतन सहित अधिक विवरण के लिए निम्न आलेख देखें।

सूची के सभी तत्वों पर प्रक्रिया लागू करें

उदाहरण के लिए, यदि आप किसी सूची के सभी तत्वों पर कुछ प्रसंस्करण लागू करना चाहते हैं, तो उपरोक्त सूची समझ अभिव्यक्ति में वांछित प्रसंस्करण का वर्णन करें।

l_square = [i**2 for i in l]
print(l_square)
# [25, 16, 9, 4, 1, 0, 1, 4, 9, 16, 25]

l_str = [str(i) for i in l]
print(l_str)
# ['-5', '-4', '-3', '-2', '-1', '0', '1', '2', '3', '4', '5']

इसका उपयोग संख्याओं की सूचियों और स्ट्रिंग्स की सूचियों के बीच कनवर्ट करने के लिए किया जा सकता है।

मानदंडों को पूरा करने वाले तत्वों को सूची से निकालें और हटाएं

यदि तत्व को केवल सशर्त अभिव्यक्ति द्वारा चुना जाना है, तो इसे अभिव्यक्ति द्वारा संसाधित नहीं किया जाता है, इसलिए यह निम्न रूप लेता है

[variable name for variable name in original list if conditional expression]

एक नई सूची तैयार की जाती है जिसमें से केवल उन तत्वों को निकाला जाता है जो शर्त को पूरा करते हैं (ऐसे तत्व जिनके लिए सशर्त अभिव्यक्ति सत्य है)।

l_even = [i for i in l if i % 2 == 0]
print(l_even)
# [-4, -2, 0, 2, 4]

l_minus = [i for i in l if i < 0]
print(l_minus)
# [-5, -4, -3, -2, -1]

यदि “यदि सशर्त अभिव्यक्ति” को “यदि सशर्त अभिव्यक्ति नहीं है” पर सेट किया जाता है, तो यह एक निषेध बन जाता है, और केवल वे तत्व जो शर्त को पूरा नहीं करते हैं (तत्व जिनके लिए सशर्त अभिव्यक्ति झूठी है) को चुना और निकाला जा सकता है। दूसरे शब्दों में, एक नई सूची तैयार की जाती है जिसमें से शर्त को पूरा करने वाले तत्वों को हटा दिया जाता है।

l_odd = [i for i in l if not i % 2 == 0]
print(l_odd)
# [-5, -3, -1, 1, 3, 5]

l_plus = [i for i in l if not i < 0]
print(l_plus)
# [0, 1, 2, 3, 4, 5]

बेशक, समान परिणाम बिना उपयोग किए समान सशर्त अभिव्यक्ति को निर्दिष्ट करके प्राप्त किया जाता है।

l_odd = [i for i in l if i % 2 != 0]
print(l_odd)
# [-5, -3, -1, 1, 3, 5]

l_plus = [i for i in l if i >= 0]
print(l_plus)
# [0, 1, 2, 3, 4, 5]

सशर्त अभिव्यक्ति भाग कई स्थितियां हो सकती हैं। नकारात्मक नोटों का भी उपयोग किया जा सकता है।

l_minus_or_even = [i for i in l if (i < 0) or (i % 2 == 0)]
print(l_minus_or_even)
# [-5, -4, -3, -2, -1, 0, 2, 4]

l_minus_and_odd = [i for i in l if (i < 0) and not (i % 2 == 0)]
print(l_minus_and_odd)
# [-5, -3, -1]

सूची की शर्तों को पूरा करने वाले तत्वों को बदलें या बदलें

उपरोक्त तत्व निष्कर्षण के उदाहरण में, शर्तों को पूरा नहीं करने वाले तत्वों को हटा दिया गया था।

यदि आप केवल शर्तों को पूरा करने वाले तत्वों पर प्रतिस्थापन, रूपांतरण आदि करना चाहते हैं, तो टर्नरी ऑपरेटर को सूची बोध संकेतन के अभिव्यक्ति भाग पर लागू करें।

पायथन में, टर्नरी ऑपरेटर को निम्नानुसार लिखा जा सकता है:

True Value if Conditional Expression else False Value
a = 80
x = 100 if a > 50 else 0
print(x)
# 100

b = 30
y = 100 if b > 50 else 0
print(y)
# 0

यह थोड़ा जटिल है, लेकिन लिस्ट कॉम्प्रिहेंशन नोटेशन और टर्नरी ऑपरेटरों का संयोजन इस प्रकार है।

[True Value if Conditional Expression else False Value for any variable name in original list]

कोष्ठक में संलग्न भाग टर्नरी ऑपरेटर है (वास्तविक कोड में कोष्ठक आवश्यक नहीं हैं)।

[(True Value if Conditional Expression else False Value) for any variable name in original list]

यदि किसी चर नाम को सत्य या असत्य मानों के लिए लिखा जाता है, तो मूल तत्व के मान का उपयोग किया जाता है। यदि कोई व्यंजक लिखा जाता है, तो उस व्यंजक की प्रोसेसिंग लागू होती है।

l_replace = [100 if i > 0 else i for i in l]
print(l_replace)
# [-5, -4, -3, -2, -1, 0, 100, 100, 100, 100, 100]

l_replace2 = [100 if i > 0 else 0 for i in l]
print(l_replace2)
# [0, 0, 0, 0, 0, 0, 100, 100, 100, 100, 100]

l_convert = [i * 10 if i % 2 == 0 else i for i in l]
print(l_convert)
# [-5, -40, -3, -20, -1, 0, 1, 20, 3, 40, 5]

l_convert2 = [i * 10 if i % 2 == 0 else i / 10 for i in l]
print(l_convert2)
# [-0.5, -40, -0.3, -20, -0.1, 0, 0.1, 20, 0.3, 40, 0.5]
Copied title and URL