2012-01-02 17 views
66

मैं ऑपरेटर में सेट के लिए पाइथन के बारे में थोड़ा उलझन में हूं।पायथन का "इन" सेट ऑपरेटर

यदि मेरे पास पाइथन और कुछ उदाहरण बी में एक सेट है, तो क्या यह सच है कि "बी इन एस" का अर्थ है "क्या इसमें कुछ तत्व x है जैसे बी == एक्स सत्य है"?

+27

आप एक गणितज्ञ हैं शामिल करने के लिए संपादित? सरल चीजों को अत्यधिक जटिल तरीके से वर्णित करना ..;) – ThiefMaster

+5

कंप्यूटर वैज्ञानिक। मैं थोड़ा उलझन में हूं क्योंकि प्रलेखन "एस में सदस्यता के लिए टेस्ट एक्स" कहता है। मेरे लिए इसका अर्थ यह हो सकता है कि "आवृत्ति एक्स एस में निहित है" या "कुछ उदाहरण मौजूद है जिसमें एक्स के समान मूल्य है"। मुझे नहीं पता कि यह एक पहचान या समानता तुलना है या नहीं। – Dejas

+3

@ डीजेस: चूंकि आप जानते हैं कि पाइथन के पास दो ऑपरेटर समानता तुलना और पहचान तुलना है, तो आप प्रत्येक प्रयोग की पुष्टि करने वाले प्रयोग का निर्माण करने में सक्षम होना चाहिए। यदि आप उस प्रयोग को पोस्ट करते हैं तो इससे मदद मिलेगी। –

उत्तर

55

हाँ, पर यह भी मतलब है hash(b) == hash(x), इसलिए आइटम की समानता उन्हें एक ही बनाने के लिए पर्याप्त नहीं है।

+7

ठीक है तो "क्या कोई तत्व x है जिसमें हैश (बी) == हैश (x) और x == b"? – Dejas

+0

@ डीजेस: सही। –

+4

अगर किसी ने अपने वर्ग के हैश फ़ंक्शन को एक मोड़ तरीके से कार्यान्वित किया है, तो वह यही प्राप्त कर सकता है (और लायक)। – ugoren

0

हां। इसका मतलब है कि दिया गया तत्व सेट में है।

+1

हालांकि स्पष्ट होने के लिए बस। "सेट में है" का मतलब है "ए == बी" और नहीं "ए बी है", सही? – Dejas

34

यह सही है। आप इस तरह दुभाषिया में यह कोशिश कर सकते:

>>> a_set = set(['a', 'b', 'c']) 

>>> 'a' in a_set 
True 

>>>'d' in a_set 
False 
+3

Fyi, 'सेट' बहिष्कृत है। 'सेट() 'अब कुछ समय के लिए एक बिल्टिन है। – ThiefMaster

+0

ओह, ज़ाहिर है। क्षमा करें :) मैं अपना नमूना बदलता हूं ... –

+0

यह बहुत अच्छा परीक्षण नहीं है क्योंकि स्ट्रिंग स्थिरांक अक्सर इंटर्न किए जाते हैं ('ए =' ए '; बी =' ए '; ए बी है)। मैंने इसे 'ए = (1, 2, 3) के साथ करने की कोशिश की; बी = (1, 2, 3); एक == बी; हैश (ए) == हैश (बी); एक बी है; एक सेट ([बी]) 'बदले में। – Philipp

0

स्ट्रिंग्स, हालांकि वे set प्रकार नहीं कर रहे हैं, एक मूल्यवान in लिपियों में सत्यापन के दौरान संपत्ति है:

yn = input("Are you sure you want to do this? ") 
if yn in "yes": 
    #accepts 'y' OR 'e' OR 's' OR 'ye' OR 'es' OR 'yes' 
    return True 
return False 

मुझे आशा है कि यह आप बेहतर ढंग से समझने में मदद करता है इस उदाहरण के साथ in का उपयोग।

+1

यह एक सेट नहीं है। न ही तारों को विचलित कर रहे हैं। –

+0

मुझे नहीं पता कि मैं क्या सोच रहा था ... आप सही हैं। – Droogans

+3

'... या 'ई' या 'एस' या 'एस'। इस निर्विवाद गलत जवाब को हटाने पर विचार करें। – Quuxplusone

8

हां इसका मतलब हो सकता है, या यह एक साधारण इटरेटर हो सकता है। इटरेटर के रूप में उदाहरण: उदाहरण के लिए:

a=set(['1','2','3']) 
for x in a: 
print ('This set contains the value ' + x) 

इसी तरह एक चेक के रूप में:

a=set('ILovePython') 
if 'I' in a: 
print ('There is an "I" in here') 

संपादित: सूचियों के बजाय सेट और तार

+0

इसे सेट के साथ क्या करना है? –

+0

अच्छी तरह से मुझे लगता है कि एक सूची या एक स्ट्रिंग को एक सेट के समान गुण माना जा सकता है। वे तत्वों का संग्रह हैं। –

+1

नहीं, सेट्स की रोकथाम जांच के लिए अतिरिक्त शर्त है कि अनुक्रम नहीं हैं। –

संबंधित मुद्दे