ازگر میں، ایک ٹیوپل یا فہرست کے عناصر کو بڑھایا جا سکتا ہے اور متعدد متغیرات کو تفویض کیا جا سکتا ہے۔ اسے سیکوینس ان پیکنگ یا پیک شدہ اسائنمنٹ کہا جاتا ہے۔
مندرجہ ذیل تفصیلات یہاں بیان کی گئی ہیں۔
- ٹیپلز اور فہرستوں کی بنیادی باتیں کھولنا
- نیسٹڈ ٹیپلز، پیک شدہ فہرستیں۔
- انڈر سکور کے ساتھ پیک کھولنا:
_ - ستاروں کے ساتھ پیک کھولنا:
*
ٹیپلز، فہرستوں اور لغات کو فنکشن آرگیومنٹ کے طور پر پھیلانے اور منتقل کرنے کے لیے ستارے کے استعمال کے بارے میں معلومات کے لیے درج ذیل مضمون کو دیکھیں۔
ٹیپلز اور فہرستوں کی بنیادی باتیں کھولنا
جب متغیرات کو بائیں طرف لکھا جاتا ہے، کوما سے الگ کیا جاتا ہے، تو ہر متغیر کو دائیں ہاتھ کی طرف ٹوپل یا فہرست کا ایک عنصر تفویض کیا جاتا ہے۔ یہ tuples اور فہرست دونوں کے لیے ایک جیسا ہے (مندرجہ ذیل مثالیں tuple فارم میں لکھی گئی ہیں)۔
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_ کے ساتھ پیک کیا گیا۔
Python میں، نہ صرف پیک شدہ، اقدار جن کی ضرورت نہیں ہے روایتی طور پر انڈر سکور (انڈر سکور) _ کو تفویض کیا جاتا ہے۔ کوئی خاص گرائمر معنی نہیں ہے؛ وہ صرف _ نامی متغیر کو تفویض کیے گئے ہیں۔
t = (0, 1, 2)
a, b, _ = t
print(a)
print(b)
print(_)
# 0
# 1
# 2
ستاروں کے ساتھ پیک کھولنا
اگر متغیر کی تعداد عناصر کی تعداد سے کم ہے تو متغیر کے نام میں ایک ستارہ عناصر کو فہرست کے طور پر ایک ساتھ تفویض کرنے کا سبب بنے گا۔
اس نحو کو Python 3 سے لاگو کیا گیا ہے اور Python 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
صرف ایک ستارہ منسلک کیا جا سکتا ہے۔ اگر ستارے کے ساتھ نشان زد متعدد متغیرات ہیں، تو SyntaxError کی خرابی کا نتیجہ ہوگا کیونکہ یہ تعین کرنا ممکن نہیں ہے کہ ہر متغیر کو کتنے عناصر تفویض کیے گئے ہیں۔
# *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
# []


