सूचियों से आइटम हटाते समय गलत लूपिंग
किसी सूची पर पुनरावृत्ति करते समय और लूप के भीतर आइटम हटाते समय, आपको अप्रत्याशित व्यवहार का सामना करना पड़ सकता है। निम्नलिखित कोड पर विचार करें:
letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l']
for i in letters:
letters.remove(i)
print(letters)
उम्मीद के मुताबिक सभी आइटम हटाने के बजाय, इस कोड के परिणामस्वरूप निम्नलिखित आउटपुट मिलता है:
['b', 'd', 'f', 'h', 'j', 'l']
यह प्रतीत होने वाला अजीब व्यवहार Python के दस्तावेज़ द्वारा समझाया गया है:
[I]t में पुनरावृत्त किए जा रहे अनुक्रम को संशोधित करना सुरक्षित नहीं है कुंडली। यदि आपको उस सूची को संशोधित करने की आवश्यकता है जिस पर आप पुनरावृति कर रहे हैं, तो आपको एक प्रतिलिपि पर पुनरावृति करनी होगी। छोड़े जाने योग्य लूप।सटीक आइटम हटाने के लिए पुनर्लेखन
इस व्यवहार को ठीक करने के लिए, आपको पुनरावृत्त करना चाहिए सूची की एक प्रति पर या वस्तुओं को हटाने के लिए वैकल्पिक तरीकों का उपयोग करें। यहां तीन विकल्प हैं:
del letters[:]
del letters[:]
letters = []
अक्षर = [अक्षरों में अक्षर के लिए अक्षर यदि अक्षर ['ए', 'सी', 'ई' में नहीं है , 'जी', 'आई', 'के']]del letters[:]
अक्षर = सूची(फ़िल्टर(लैम्ब्डा अक्षर: अक्षर ['ए', 'सी', 'ई' में नहीं है, 'जी', 'आई', 'के'], अक्षर))letters = list(filter(lambda letter: letter not in ['a', 'c', 'e', 'g', 'i', 'k'], letters))
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3