मैं inसेट के लिए अजगर ऑपरेटर के बारे में थोड़ा उलझन में हूं ।
अगर मैं एक सेट है sऔर कुछ उदाहरण bहै, यह सच है कि b in sइसका मतलब है " वहाँ कुछ तत्व है xमें sऐसी है कि b == xहैtrue "?
मैं inसेट के लिए अजगर ऑपरेटर के बारे में थोड़ा उलझन में हूं ।
अगर मैं एक सेट है sऔर कुछ उदाहरण bहै, यह सच है कि b in sइसका मतलब है " वहाँ कुछ तत्व है xमें sऐसी है कि b == xहैtrue "?
जवाबों:
हां, लेकिन इसका मतलब यह भी है hash(b) == hash(x), इसलिए वस्तुओं की समानता उन्हें समान बनाने के लिए पर्याप्त नहीं है।
ये सही है। आप इसे दुभाषिया में इस तरह आज़मा सकते हैं:
>>> a_set = set(['a', 'b', 'c'])
>>> 'a' in a_set
True
>>>'d' in a_set
False
a = 'a'; b = 'a'; a is b)। मैंने a = (1, 2, 3); b = (1, 2, 3); a == b; hash(a) == hash(b); a is b; a in set([b])इसके बजाय इसके साथ प्रयास किया ।
हां इसका मतलब यह हो सकता है, या यह एक सरल पुनरावृत्ति हो सकता है। उदाहरण के लिए: पुनरावृति के रूप में उदाहरण:
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')
संपादित: सूचियों और तारों के बजाय सेटों को शामिल करने के लिए संपादित किया गया
स्ट्रिंग्स, हालांकि वे 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इस उदाहरण के उपयोग को बेहतर ढंग से समझने में मदद करेगा ।
... or 'e' or 'es' or 's'। इस व्यर्थ गलत उत्तर को हटाने पर विचार करें।
सेट डिक्ट्स की तुलना में अलग व्यवहार करते हैं, आपको सेट ऑपरेशंस जैसे इस्बसेट () का उपयोग करने की आवश्यकता होती है:
>>> k
{'ip': '123.123.123.123', 'pw': 'test1234', 'port': 1234, 'debug': True}
>>> set('ip,port,pw'.split(',')).issubset(set(k.keys()))
True
>>> set('ip,port,pw'.split(',')) in set(k.keys())
False