Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में a += b हमेशा a = a + b नहीं होता

महत्वपूर्ण अंतर

अपरिवर्तनीय (immutable) प्रकारों (int, float, str, tuple) के लिए a += b और a = a + b समान व्यवहार करते हैं। लेकिन **परिवर्तनीय (mutable) प्रकारों** (list, dict, set) के लिए व्यवहार अलग होता है।

केस 1: a = a + b (नया ऑब्जेक्ट बनाता है)

x = 'Hello '
z_list = [1, 2, 3]

try:
    z_list = z_list + x  # TypeError!
except TypeError as e:
    print(f"त्रुटि: {e}")
    # can only concatenate list (not "str") to list

केस 2: a += b (इन-प्लेस संशोधन)

z_list = [1, 2, 3]
x = 'Hello'

z_list += x  # इन-प्लेस एक्सटेंड: स्ट्रिंग को इटरेट करके प्रत्येक अक्षर जोड़ता है
print(z_list)
# [1, 2, 3, 'H', 'e', 'l', 'l', 'o']

क्यों?

  • a = a + b → a.__add__(b) कॉल करता है, नया ऑब्जेक्ट लौटाता है, फिर असाइन करता है।
  • a += b → पहले a.__iadd__(b) (इन-प्लेस एड) कोशिश करता है। सूचियों के लिए __iadd__ extend() जैसा व्यवहार करता है (इटरेटबल से प्रत्येक आइटम जोड़ता है)। यदि __iadd__ नहीं है, तो __add__ पर फॉलबैक करता है।

व्यावहारिक प्रभाव

# रेफरेंस साझाकरण प्रभावित होता है
a = [1, 2]
b = a

a = a + [3]      # नई सूची बनाता है
print(a, b)      # [1, 2, 3] [1, 2]  ← b अपरिवर्तित

a = [1, 2]
b = a
a += [3]         # इन-प्लेस संशोधन
print(a, b)      # [1, 2, 3] [1, 2, 3]  ← b भी बदल गया!

सारांश

ऑपरेशनअपरिवर्तनीय (int, str, tuple)परिवर्तनीय (list, dict, set)
a = a + bनया ऑब्जेक्टनया ऑब्जेक्ट (यदि समर्थित)
a += bनया ऑब्जेक्ट (पुनर्असाइन)इन-प्लेस संशोधन (यदि __iadd__ परिभाषित है)

सलाह: परिवर्तनीय ऑब्जेक्ट्स के साथ += का उपयोग करते समय रेफरेंस साझाकरण के प्रति सावधान रहें।

  1. - पायथन not कीवर्ड का उपयोग कैसे करें

    पायथन not कीवर्ड का उपयोग कैसे करें पायथन not कीवर्ड True लौटाता है यदि कोई मान False के बराबर है और इसके विपरीत। यह कीवर्ड बूलियन के मान को उलट देता है। not कीवर्ड का उपयोग if स्टेटमेंट के साथ यह जांचने के लिए किया जा सकता है कि कोई मान सूची में नहीं है। मैं कैसे जांचूं कि कोई चीज सूची में नहीं है

  1. पायथन में हीप मैक्स हीप बना रहा है या नहीं जांचने का प्रोग्राम पायथन में हीप मैक्स हीप बना रहा है या नहीं जांचने का प्रोग्राम

    मान लीजिए हमारे पास एक सूची है जो हीप ट्री का प्रतिनिधित्व करती है। जैसा कि हम जानते हैं हीप एक पूर्ण बाइनरी ट्री है। हमें जांचना है कि तत्व मैक्स हीप बना रहे हैं या नहीं। जैसा कि हम जानते हैं मैक्स हीप के लिए प्रत्येक तत्व अपने दोनों बच्चों से बड़ा होता है। इसलिए, यदि इनपुट है nums = [8, 6, 4, 2, 0

  1. पायथन में जांचें कि कोई संख्या डाइहेड्रल अभाज्य संख्या है या नहीं पायथन में जांचें कि कोई संख्या डाइहेड्रल अभाज्य संख्या है या नहीं

    मान लीजिए हमारे पास एक संख्या n है। हमें जांचना है कि n डाइहेड्रल अभाज्य है या नहीं। एक संख्या डाइहेड्रल अभाज्य कहलाती है जब वह संख्या स्वयं अभाज्य हो और 7-सेगमेंट डिस्प्ले पर सामान्य या उल्टा (upside-down) दिखाने पर वही संख्या या कोई अन्य अभाज्य संख्या प्रदर्शित हो। उदाहरण के लिए, यदि इनपुट n = 11