से सेट निकाल Built-In Types 5.7 Set Types के लिए अजगर 2.7.2 प्रलेखन मेरी व्याख्या के अनुसार, यह के लिए दस्तावेज़ से set.remove(elem)
या set.discard(elem)
अजगर सेट
के लिए एक पास करके सेट बी से सेट एक के तत्वों को दूर करने के संभव हो जाना चाहिए 2.7.2:
ध्यान दें,
__contains__()
,remove()
करने ELEM तर्क, औरdiscard()
तरीकों एक सेट हो सकता है।
मैं इस व्याख्या का मतलब है कि मैं पारित कर सकते हैं एक set
remove(elem)
करने के लिए या discard(elem)
और उन सभी तत्वों लक्ष्य सेट से निकाल दिया जाएगा। मैं इसे अजीब कुछ करने के लिए उपयोग करता हूं जैसे स्ट्रिंग या remove all common words from a word-frequency historam से सभी स्वरों को हटा दें। यहाँ परीक्षण कोड है:
Python 2.7.2 (default, Jun 12 2011, 14:24:46) [M...
Type "help", "copyright", "credits" or "license"
>>> a = set(range(10))
>>> b = set(range(5,10))
>>> a
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> b
set([8, 9, 5, 6, 7])
>>> a.remove(b)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: set([8, 9, 5, 6, 7])
>>> a.discard(b)
>>> a
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>>
कौन सा मैं वापस जाने के लिए उम्मीद:
>>> a
set([0, 1, 2, 3, 4])
मैं जानता हूँ कि मैं a.difference(b)
जो एक नया सेट रिटर्न के साथ ऐसा कर सकते हैं; या set.difference_update(other)
के साथ; या सेट ऑपरेटर a -= b
के साथ, जो सेट इन-प्लेस को संशोधित करता है।
तो क्या यह दस्तावेज़ीकरण में एक बग है? क्या set.remove(elem)
वास्तव में एक तर्क के रूप में सेट नहीं ले सकता है? या दस्तावेज सेट के सेट का संदर्भ देता है? यह देखते हुए कि difference_update
मेरी व्याख्या पूरी करता है, मुझे लगता है कि मामला उत्तरार्द्ध है।
क्या यह अस्पष्ट नहीं है?
संपादित अतिरिक्त (कुछ पेशेवर) अजगर काम करते हैं, और हाल ही में इस सवाल का वापस खींचा जा रहा है के 3 साल के बाद, मैं अब एहसास क्या मैं वास्तव में क्या करने के लिए कोशिश कर रहा था के साथ पूरा किया जा सकता है:
>>> c = a.difference(b)
set([0,1,2,3,4])
जो मैं मूल रूप से प्राप्त करने की कोशिश कर रहा था।
मुझे प्यार है कि आप इतने सालों बाद इस पर वापस आए! +1 –