में '~' (tilde) ऑपरेटर के अनुप्रयोगों ने मुझे this question के माध्यम से पाइथन में bitwise complement unary operation की खोज की है और इसके लिए वास्तविक एप्लिकेशन के साथ आने का प्रयास कर रहे हैं, और यदि नहीं, तो यह निर्धारित करने के लिए कि यह आमतौर पर ओवरलोड करने के लिए सुरक्षित है या नहीं अन्य उपयोगों के लिए ऑपरेटर (__invert__
विधि ओवरराइड करके)। प्रश्न में दिया गया उदाहरण TypeError
के साथ विफल रहता है, और link प्रदान किया गया है जो बहुत डरावना लगता है। यहाँ कुछ नगण्य आसपास उपयोग में ~
को देखने के लिए है:पायथन
from bitstring import BitArray
x = 7
print(~x)
# -8
print(BitArray(int=x, length=4).bin)
# '0111'
print(BitArray(int=~x, length=4).bin)
# '1000'
print(~~True, ~~False)
# 1 0
for i in range(-100, 100):
assert i + ~i == -1
assert i^~i == -1
assert bool(i) == ~~bool(i)
वहाँ किसी भी इस ऑपरेटर है कि मैं के बारे में पता होना चाहिए के लिए मान्य उपयोग-मामले के उदाहरण हैं? और यहां तक कि यदि भी हैं, तो क्या यह आमतौर पर int
के अलावा अन्य प्रकार के लिए इस ऑपरेटर को ओवरराइड करने के लिए स्वीकार्य है?
numpy/पांडा में, यह elementwise के लिए प्रयोग किया जाता है सरणी की तुलना। उदाहरण के लिए, यदि 'arr = [True, गलत, True]', '~ arr' लौटाता है [गलत, सही, गलत]'। – ayhan
@ayhan यह अच्छा है, तो यह एक कास्टिंग नियम लागू करता है? ऐसा लगता है कि यह इंट्स के सरणी के लिए भी काम करता है, लेकिन 'int' और 'bool' के संयोजन के दौरान टूट जाता है: '~ np.array ([1, 0, -1, True, False]) -> सरणी ([ -2, -1, 0, -2, -1]) '। 'Bool' मानों को 'int' मानों में परिवर्तित करने के लिए एक मजेदार चाल के रूप में उपयोग किया जा सकता है हालांकि:' ~~ (np.array ([True, False] + [1])) [: - 1] -> सरणी ([1] , 0]) ' – Alec
@ एलेक या तो आपके पास 'बूल' या 'int' की सरणी है। 'बूल' और 'int' को मिलाकर 'int' सरणी उत्पन्न होती है। – Bakuriu