"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > लूप्स का उपयोग करके सूचियों से आइटम हटाते समय अप्रत्याशित व्यवहार को कैसे संभालें?

लूप्स का उपयोग करके सूचियों से आइटम हटाते समय अप्रत्याशित व्यवहार को कैसे संभालें?

2024-11-20 को प्रकाशित
ब्राउज़ करें:600

How to Handle Unexpected Behavior When Removing Items from Lists Using Loops?

सूचियों से आइटम हटाते समय गलत लूपिंग

किसी सूची पर पुनरावृत्ति करते समय और लूप के भीतर आइटम हटाते समय, आपको अप्रत्याशित व्यवहार का सामना करना पड़ सकता है। निम्नलिखित कोड पर विचार करें:

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))
विज्ञप्ति वक्तव्य इस लेख को पुन: प्रस्तुत किया गया है: 1729301716 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] पर संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3