पायथन में, एक टपल या सूची के तत्वों का विस्तार किया जा सकता है और कई चरों को सौंपा जा सकता है। इसे सीक्वेंस अनपैकिंग या अनपैक्ड असाइनमेंट कहा जाता है।
निम्नलिखित विवरण यहाँ वर्णित हैं।
- टुपल्स और सूचियों की मूल बातें खोलना
- नेस्टेड टुपल्स, अनपैक्ड लिस्टिंग
- अंडरस्कोर के साथ अनपैकिंग:
_
- तारांकन के साथ अनपैकिंग:
*
टुपल्स, सूचियों और शब्दकोशों को फ़ंक्शन तर्कों के रूप में विस्तारित और पास करने के लिए तारांकन का उपयोग करने के बारे में जानकारी के लिए निम्न आलेख देखें।
टुपल्स और सूचियों की मूल बातें खोलना
जब चर को बाईं ओर लिखा जाता है, अल्पविराम से अलग किया जाता है, तो प्रत्येक चर को दाईं ओर टपल या सूची का एक तत्व सौंपा जाता है। यह टुपल्स और सूचियों दोनों के लिए समान है (निम्न उदाहरण टुपल रूप में लिखे गए हैं)।
t = (0, 1, 2)
a, b, c = t
print(a)
print(b)
print(c)
# 0
# 1
# 2
l = [0, 1, 2]
a, b, c = l
print(a)
print(b)
print(c)
# 0
# 1
# 2
ध्यान दें कि चूंकि टुपल्स गोल कोष्ठक को छोड़ सकते हैं, इसलिए इसका उपयोग एक पंक्ति में कई चर के लिए कई मान निर्दिष्ट करने के लिए किया जा सकता है।
a, b = 0, 1
print(a)
print(b)
# 0
# 1
यदि चर की संख्या तत्वों की संख्या से मेल नहीं खाती है, तो एक त्रुटि होती है।
# a, b = t
# ValueError: too many values to unpack (expected 2)
# a, b, c, d = t
# ValueError: not enough values to unpack (expected 4, got 3)
यदि चरों की संख्या तत्वों की संख्या से कम है, तो शेष तत्वों को चर नाम में तारांकन जोड़कर सूची के रूप में असाइन किया जा सकता है (नीचे देखें)।
नेस्टेड टुपल्स, अनपैक्ड लिस्टिंग
नेस्टेड टुपल्स और सूचियों को भी अनपैक किया जा सकता है। यदि आप सामग्री को भी अनपैक करना चाहते हैं, तो वेरिएबल को निम्न में से किसी एक में संलग्न करें
()
[]
t = (0, 1, (2, 3, 4))
a, b, c = t
print(a)
print(b)
print(c)
# 0
# 1
# (2, 3, 4)
print(type(c))
# <class 'tuple'>
a, b, (c, d, e) = t
print(a)
print(b)
print(c)
print(d)
print(e)
# 0
# 1
# 2
# 3
# 4
_underscore_ के साथ अनपैक किया गया।
पायथन में, न केवल अनपैक्ड, जिन मूल्यों की आवश्यकता नहीं है उन्हें पारंपरिक रूप से अंडरस्कोर (अंडरस्कोर) _ को सौंपा गया है। कोई विशेष व्याकरणिक अर्थ नहीं है; वे बस _ नामक एक चर को सौंपे जाते हैं।
t = (0, 1, 2)
a, b, _ = t
print(a)
print(b)
print(_)
# 0
# 1
# 2
तारांकन के साथ अनपैकिंग
यदि चरों की संख्या तत्वों की संख्या से कम है, तो चर नाम में एक तारांकन तत्वों को एक सूची के रूप में एक साथ निर्दिष्ट करने का कारण बनेगा।
यह सिंटैक्स पायथन 3 से लागू किया गया है और यह पायथन 2 में उपलब्ध नहीं है।
तत्वों को तारांकन के बिना शुरुआत और अंत से चर के लिए असाइन किया गया है, और शेष तत्वों को तारांकन के साथ चर के लिए एक सूची के रूप में असाइन किया गया है।
t = (0, 1, 2, 3, 4)
a, b, *c = t
print(a)
print(b)
print(c)
# 0
# 1
# [2, 3, 4]
print(type(c))
# <class 'list'>
a, *b, c = t
print(a)
print(b)
print(c)
# 0
# [1, 2, 3]
# 4
*a, b, c = t
print(a)
print(b)
print(c)
# [0, 1, 2]
# 3
# 4
उदाहरण के लिए, यदि आप किसी चर के लिए टपल या सूची के केवल पहले दो तत्वों को असाइन करना चाहते हैं, तो आप उन हिस्सों के लिए उपरोक्त अंडरस्कोर का उपयोग कर सकते हैं जिनकी आवश्यकता नहीं है।
a, b, *_ = t
print(a)
print(b)
print(_)
# 0
# 1
# [2, 3, 4]
इसे इस प्रकार भी लिखा जा सकता है
a, b = t[0], t[1]
print(a)
print(b)
# 0
# 1
केवल एक तारांकन चिह्न संलग्न किया जा सकता है। यदि तारक से चिह्नित एक से अधिक चर हैं, तो एक सिंटैक्स त्रुटि त्रुटि होगी क्योंकि यह निर्धारित करना संभव नहीं है कि प्रत्येक चर को कितने तत्व असाइन किए गए हैं।
# *a, b, *c = t
# SyntaxError: two starred expressions in assignment
ध्यान दें कि तारक से चिह्नित चर को असाइन किया गया एक भी तत्व एक सूची के रूप में असाइन किया गया है।
t = (0, 1, 2)
a, b, *c = t
print(a)
print(b)
print(c)
# 0
# 1
# [2]
print(type(c))
# <class 'list'>
यदि कोई अतिरिक्त तत्व नहीं हैं, तो एक खाली सूची असाइन की जाती है।
a, b, c, *d = t
print(a)
print(b)
print(c)
print(d)
# 0
# 1
# 2
# []