"जाहिर है, मैं इसे मूल सेट पर फिर से चलाने के दौरान नहीं कर सकता।"
मुझे यकीन नहीं है कि यह सच है ... जब मैंने कोशिश की तो मुझे "सहमति" त्रुटियों की उम्मीद थी, लेकिन ऐसा कोई प्रतीत नहीं हुआ। रिकॉर्ड कोड के लिए मैं दिखता उपयोग कर रहा हूँ इस तरह:
for member in myset:
myset.remove(member)
("सदस्य" सेट के लिए चर नाम का एक बेहतर विकल्प है, "तत्व" सूचियों के लिए)
आह ... बस देखा ज़ीरो पी के उत्तर के तहत दयालु टिप्पणी: स्पष्ट रूप से दयालु एक विशेषज्ञ है जहां मैं एक बंबलर हूं, लेकिन मैं अपना जवाब किसी भी तरह से ध्यान में रखूंगा ...
एनबी शून्य पी कृपया इस तरह के दावे का सम्मान करता है कि यह शत्रुता के साथ ठीक है ... लेकिन दिए गए सेट, डिजाइन द्वारा, अनियंत्रित हैं, मुझे लगता है कि हम निष्कर्ष निकाल सकते हैं कि समेकन त्रुटियों को (और पाइथन में करना चाहिए?) केवल तभी उगाया जाता है जब से हटाया जाता है आदेश दिया गया संग्रह (यानी। सूची - और तब भी आप समस्या से बचने के लिए एक रिवर्स इंडेक्स उलटी गिनती का उपयोग कर सकते हैं)।
इसलिए यह प्रकट होता कि विलोपन-while-बार दोहराना के लिए घृणा अन्य भाषाओं में खराब कार्यान्वित संरचनाओं से बुरे अनुभव से अंधविश्वास और/या hangovers की बात है।
अंतिम विचार: सेट और पुनरावृत्तियों वास्तव में बहुत अच्छी तरह से नहीं जाते हैं: चूंकि एक सेट अनियंत्रित है, इसलिए आप कभी भी सभी सदस्यों के सबसेट पर यादृच्छिक फैशन में पुनरावृत्ति कर सकते हैं (विशेष रूप से सबसेट 'सब' या 'स्वयं' !)। सेट समानता परीक्षण और डुप्लिकेट हटाने के लिए अनुकूलित किए जाते हैं, और यह उनके इच्छित उपयोग को दर्शाता है। (? आदर्श समाधान)
तो ऊपर के लिए कोड का एक बराबर सा है:
while myset:
member = myset.pop()
# do something
स्रोत
2015-12-29 18:25:41
आपरेशन करता है * हमेशा * आइटम को हटाने, या केवल कभी कभी? यदि आप हमेशा आइटम को हटाते हैं, तो पुनरावृत्ति पूर्ण होने के बाद बस सेट को खाली करना आसान हो सकता है। – Blckknght