दिलचस्प पोस्ट
क्या ऑटोमैपर लिंक का समर्थन करता है? MySQL में utf8 सेट नाम? फास्ट और कॉम्पैक्ट ऑब्जेक्ट सीरियललाइज़ेशन में एनएटी POSIX फ़ाइल डिस्क्रिप्टर से सी + + एफएसटीआई बनाने के लिए कैसे करें? एंड्रॉइड एप्लिकेशन में दो क्लास के बीच स्ट्रिंग एआरिंग पास करना स्विफ्ट 3 URLSession.shared () सदस्य 'डेटाटस्क के साथ संदिग्ध संदर्भ (साथ: समापनहैण्डलर :) त्रुटि (बग) 'क्लीनफिक्स' के किस तरीकों का मैं उपयोग कर सकता हूं? जावा में कौन से आपरेशन परमाणु माना जाता है? JavaScriptSerializer। डायरेरिअलाइज़ – फ़ील्ड नाम बदलने के लिए UINavigationBar ऊँचाई बदलें क्या भिन्न-भिन्न मैक्रोज़ में तर्कों को पुनरावृति करना संभव है? विविधतापूर्ण टेम्पलेट पैक विस्तार सिंगलटन के साथ यूनिट परीक्षण पांडा कॉलम पर कई डेटाफ्रेम में शामिल हो गए पायथन में परिपत्र आयात से कैसे बचें?

पायथन में टिल्ड ऑपरेटर

पायथन में टिल्ड ऑपरेटर का उपयोग क्या है?

एक बात जो मैं सोच सकता हूँ एक स्ट्रिंग या सूची के दोनों किनारों में कुछ कर रहा है, जैसे कि जाँच करें कि कोई स्ट्रिंग पॉलिंड्रोमिक है या नहीं:

def is_palindromic(s): return all(s[i] == s[~i] for i in range(len(s) / 2)) 

कोई अन्य अच्छा उपयोग?

वेब के समाधान से एकत्रित समाधान "पायथन में टिल्ड ऑपरेटर"

यह एक असामान्य ऑपरेटर (एक तर्क को लेना) है जो सी से उधार लिया गया है, जहां सभी डेटा प्रकार बाइट्स की व्याख्या के अलग-अलग तरीके हैं। यह "उलटा" या "पूरक" ऑपरेशन है, जिसमें इनपुट डेटा के सभी बिट उलट किए जाते हैं।

पायथन में, पूर्णांक के लिए, पूर्णांक के दो छमाही के प्रतिनिधित्व के बिट्स को उलट कर दिया जाता है (जैसा कि b <- b XOR 1 प्रत्येक व्यक्तिगत बिट के लिए b <- b XOR 1 ), और परिणाम दो बार पूरक पूर्णांक के रूप में दोबारा व्याख्या किया। तो पूर्णांक के लिए, ~x (-x) - 1 बराबर है

ऑपरेटर के संशोधित रूप को operator.invert .invert के रूप में प्रदान किया गया operator.invert । अपने खुद के वर्ग में इस ऑपरेटर का समर्थन करने के लिए, इसे एक __invert__(self) विधि दें।

 >>> import operator >>> class Foo: ... def __invert__(self): ... print 'invert' ... >>> x = Foo() >>> operator.invert(x) invert >>> ~x invert 

किसी भी वर्ग में यह एक उदाहरण के "पूरक" या "उलटा" होने के लिए अर्थपूर्ण है, जो एक ही कक्षा का एक उदाहरण है, इन्वेंट ऑपरेटर के लिए संभावित उम्मीदवार है। हालांकि, ऑपरेटर ओवरलोडिंग यदि दुर्व्यवहार हो तो भ्रम की स्थिति पैदा कर सकता है, इसलिए सुनिश्चित करें कि यह वास्तव में आपकी कक्षा के लिए एक __invert__ विधि प्रदान करने से पहले ऐसा करने में समझ में आता है। (ध्यान दें कि बाइट-स्ट्रिंग्स [ex: '\xff' ] इस ऑपरेटर का समर्थन नहीं करते हैं, भले ही यह एक बाइट-स्ट्रिंग के सभी बिट्स को पलटने के लिए सार्थक है।)

~ अजगर में बिट्युलर पूरक ऑपरेटर है जो अनिवार्य रूप से गणना करता है -x - 1

तो एक मेज ऐसा दिखेगा

 i ~i 0 -1 1 -2 2 -3 3 -4 4 -5 5 -6 

इसलिए i = 0 यह s[0] साथ तुलना करता है s[len(s) - 1] , i = 1 , s[1] s[len(s) - 2]

आपके दूसरे प्रश्न के लिए, यह बिट कीड़े की एक सीमा के लिए उपयोगी हो सकता है

numpy.bool_ पूरक ऑपरेटर होने के अलावा, ~ बुलियन मान को वापस करने में भी मदद कर सकता है, हालांकि यह यहां पारंपरिक numpy.bool_ प्रकार नहीं है, बल्कि आपको numpy.bool_ उपयोग करना चाहिए।


इस में समझाया गया है,

 import numpy as np assert ~np.True_ == np.False_ 

तार्किक मान को पीछे करना उपयोगी हो सकता है, जैसे, नीचे ~ ऑपरेटर का इस्तेमाल आपके डाटासेट को शुद्ध करने के लिए किया जाता है और आपको बिना किसी एनएएन स्तंभ लौटाता है।

 from numpy import NaN import pandas as pd matrix = pd.DataFrame([1,2,3,4,NaN], columns=['Number'], dtype='float64') # Remove NaN in column 'Number' matrix['Number'][~matrix['Number'].isnull()]