python - `Var




python-3.x (2)

मैं आमतौर पर समझता हूं कि स्लाइस असाइनमेंट ऑपरेटर के बाईं और दाईं ओर कैसे व्यवहार करते हैं।

हालांकि, मैंने इसे पायथन (3.8.0) मैनुअल में देखा है और यह पता लगाने की कोशिश कर रहा हूं कि मुझे क्या याद आ रहा है।

रिक्त सूची के साथ सभी तत्वों को प्रतिस्थापित करके सूची को साफ़ करें

पत्र [:] = []

कैसे है कि सिर्फ letters = [] से अलग letters = [] ?

(यह खोज करना आसान नहीं है [:] जैसा कि स्टैकओवरफ़्लो आपको लगता है कि आप एक टैग की तलाश कर रहे हैं। इसलिए, अगर पहले से ही कोई उत्तर है तो मैं इसे नहीं ढूँढ सकता।)

मैं कुछ अप्रासंगिक उत्तर देखता हूं। इसलिए, स्पष्ट रूप से स्पष्टता के लिए, सवाल यह नहीं है कि [:] स्लाइस का मतलब क्या है, बल्कि खाली सूची को एक को सौंपने के बारे में है।


असाइनमेंट var = [] नाम var को नई बनाई गई सूची में बांधता है। नाम var पहले से किसी अन्य सूची से जुड़ा हुआ है या नहीं हो सकता है, और यदि यह है, तो वह सूची अपरिवर्तित रहेगी।

दूसरी ओर, var[:] = [] पहले से ही एक सूची में बाउंड होने के लिए var अपेक्षा करता है, और उस सूची को इन-प्लेस में बदल दिया जाता है।

इसीलिए इन दोनों मामलों में व्यवहार भिन्न है:

var1 = [1, 2, 3]
var2 = var1
var1 = []
print(var1, var2)  # prints [] [1, 2, 3]

var1 = [1, 2, 3]
var2 = var1
var1[:] = []
print(var1, var2)  # prints [] []

यह कोड दर्शाता है कि क्या चल रहा है:

original = ['a','b','c']

letters = original

print('Same List')
print(original)
print(letters)

letters = []

print('Different lists')
print(original)
print(letters)

letters = original

letters[:] = []

print('Same list, but empty')
print(original)
print(letters)

आउटपुट:

Same List
['a', 'b', 'c']
['a', 'b', 'c']
Different lists
['a', 'b', 'c']
[]
Same list, but empty
[]
[]

कोड का पहला भाग: letters = original अर्थ है कि दोनों चर समान सूची को संदर्भित करते हैं।

दूसरा भाग: letters = [] दर्शाता है कि दो चर अब अलग-अलग सूचियों का उल्लेख करते हैं।

तीसरा भाग: letters = original; letters[:] = [] letters = original; letters[:] = [] दोनों चर के साथ फिर से एक ही सूची का उल्लेख करते हुए शुरू होता है, लेकिन फिर सूची को स्वयं संशोधित किया जाता है ( [:] ) और दोनों चर अभी भी उसी का उल्लेख करते हैं, लेकिन अब संशोधित सूची।





python-3.x