ڈیٹا ساخت (Data Structure) آسان الفاظ میں وہ بناوٹ یا ساخت ہوتی ہے جو ڈیٹا )اعداد و شمار ( کو سنبھال سکے۔ دوسرے الفاظ میں یہ متعلقہ ڈیٹا کو محفوظ کرنے کے کام آتے ہیں۔
پائتھون میں چار بنی بنائی ڈیٹا ساخت(Data Structure) ہیں

لسٹ List
ٹپل Tuple
ڈکشنری Dictionary
سیٹ Set
 
سب سے پہلے لسٹ (List)سے شروع کرتے ہیں


List
لسٹ (List) ایک ایسی ڈیٹا ساخت (Data Structure) ہے جس میں اشیا یا مقداروں کے مجموعہ کو ترتیب سے رکھا جاتا ہے یعنی یہ ایک مرتب مجموعہ ہوتا ہے۔ یہ ایسے ہی جیسے آپ نے شاپنگ کی ایک لسٹ بنائی ہو اور اس میں ترتیب سے اشیا کے نام لکھے ہوں۔ پائتھون میں لسٹ کے اراکین (elements)کو کومہ کی مدد سے الگ کیا جاتا ہے اور چوکور بریکٹ( [] square bracket) میں لکھا جاتا ہے۔ جو اشیا یا مقداریں لسٹ بناتی ہیں انہیں لسٹ کے اراکین کہا جاتا ہے۔
لسٹ اور اسٹرنگ ملتے جلتے ہیں ، اسٹرنگ بھی حروف کا مرتب سیٹ ہوتا ہے جبکہ لسٹ میں حروف اور نمبر دونوں ہو سکتے ہیں۔

لسٹ ، اسٹرنگ اور اس جیسی اور چیزیں جن میں سیٹ کی ترتیب موجود ہو وہ تواتر یا سلسلہ (sequence) کہلاتے ہیں۔

چار نمبروں پر مشتمل لسٹ کی مثال

PHP:
[10, 20, 30, 40]

چار اسٹرنگ پر مشتمل لسٹ کی مثال

PHP:
["spam", "bungee", "swallow"]

لسٹ میں مختلف ڈیٹا ٹائپ بھی موجود ہو سکتی ہیں بلکہ لسٹ کے اندر بھی ایک لسٹ ہو سکتی ہے

PHP:
["hello", 2.0, 5, [10, 20]]

اوپر والی مثال میں ایک اسٹرنگ "ہیلو" ، ایک float عدد 2.0 , ایک مکمل عدد 5 اور ایک چھوٹی لسٹ جو دو اعداد 10،20 پر مشتمل ہے شامل ہے۔

لسٹ در لسٹ کو nested list کہتے ہیں۔
 

نیرنگ خیال

لائبریرین
لسٹ خالی بھی ہو سکتی ہے اور اس کے لیے دو چوکور (square) بریکٹوں کا استعمال کیا جاتا ہے۔

PHP:
empty = []

PHP:
>>>vocabulary = ["Sabir", "Ahmad", "Namra"]
 
>>>numbers = [17, 123]
 
>>> empty = []
 
>>>print(vocabulary)
['Sabir', 'Ahmad', 'Namra']
 
>>> print(numbers)
[17, 123]
 
print(empty)
[]
 
لسٹ کے اراکین تک رسائی کے لیے وہی طریقہ کار اختیار کیا جاتا ہے جو اسٹرنگ کے حروف تک پہنچنے کے لیے کیا جاتا ہے یعنی اشاریہ() کی مدد سے۔


نمبروں کی اس لسٹ میں پانچ نمبر ہیں اور اشاریہ(index ) ہمیشہ 0 سے شروع ہوتا ہے۔

اب ہم لسٹ کے نام کے ساتھ چوکور بریکٹ کے اندر اشاریہ دے کر لسٹ کے اراکین تک پہنچ سکتے ہیں۔

PHP:
nums = [12, 45 , 34, 50, 100]
 
>>> nums[0]
12
>>> nums[4]
100

اوپر ہم نے لسٹ nums کو پانچ اراکین کے ساتھ شروع کیا۔

اس کے بعد اشاریہ 0 کی مدد سے پہلے رکن تک رسائی حاصل کی اور اشاریہ 4 کے ساتھ پانچویں اور آخری رکن تک رسائی حاصل کی۔ اسٹرنگ کی طرح اشاریہ میں صرف مکمل عدد ہی استعمال ہو سکتا ہے ۔ اگر ہم ایسے رکن تک رسائی حاصل کرنا چاہیں جو لسٹ میں موجود نہ ہو تو ایک غلطی کا پیغام سکرین پر نظر آئے گا۔ اس لسٹ میں پانچ اراکین ہیں اگر ہم چھٹے رکن تک پہنچنا چاہیں جو کہ لسٹ میں نہیں ہے تو "لسٹ اشاریہ رسائی سے باہر " کا پیغام آئے گا۔

PHP:
>>> nums[5]
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
IndexError: list index out of range
 
اگر ہم منفی اشاریہ دیں تو لسٹ کے آخر سے اراکین کی گنتی شروع ہو جاتی ہے۔

مثلا منفی ایک آخری رکن ہوگا لسٹ کا ، منفی دو آخری سے ایک پہلے والا ، منفی تین آخری سے دو پہلے والا رکن ۔

PHP:
nums = [12, 45 , 34, 50, 100]
 
>>> nums[-1]
100
>>> nums[-2]
50
>>> nums[-3]
34

لوپ (loop) متغیر کو لسٹ اشاریہ کے طور پر بھی استعمال کر سکتے ہیں۔

PHP:
horsemen = ["war", "famine", "pestilence", "death"]
 
i = 0
while i < 4:
    print horsemen[i]
    i += 1

یہاں while لوپ 0 سے لے کر 4 تک گنتی کر رہی ہے۔ جب لوپ متغیر کی قیمت 4 ہو جاتی ہے تو وہ شرط فیل ہو جاتی ہے اور لوپ ختم ہو جاتی ہے۔ اس طرح لوپ چار دفعہ ہی چلتی ہے جب i کی قیمت 0,1,2,3 ہوتی ہے.

جب بھی لوپ چلتی ہے تو i متغیر(variable ) لسٹ میں بطور اشاریہ (index) استعمال ہوتا ہے اور i کی قیمت کے برابر جو اشاریہ بنتا ہے اس کے حساب سے لسٹ کے رکن کو پرنٹ کر دیتا ہے۔ اس طرح لسٹ میں لوپ کے ذریعے ایک ایک رکن تک رسائی حاصل کرنا list traversal کہلاتا ہے یعنی لسٹ میں گزر کر چلنا۔
 
List Length

len کے فنکشن سے ہم لسٹ کی لمبائی معلوم کر سکتے ہیں جو کہ لسٹ میں موجود اراکین کی تعداد کے برابر ہوتی ہے ۔

PHP:
horsemen = ["war", "famine", "pestilence", "death"]
 
i = 0
num = len(horsemen)
while i < num:
    print horsemen[i]
    i += 1

اس مثال میں پہلے horsemen لسٹ کی لمبائی معلوم کرکے اسے num کو سونپ دیا ہے۔

اس کے بعد while لوپ میں لسٹ کے اراکین اشاریہ کی مدد سے ایک ایک کرکے پرنٹ کیے ہیں۔
متغیر i کو اشاریہ کے طور پر استعمال کیا ہے اور اسے ہر پھیرے میں ایک جمع کرکے بڑھایا ہے۔
جب i متغیر num کے برابر ہو جاتا ہے تو لوپ ختم ہو جاتی ہے یعنی i کی قیمت 4 ہونے پر۔
 
List membership
in بولین (boolean) عامل کسی سلسلہ(sequence) میں ممبرشپ کو چیک کرتا ہے۔ in operator اسٹرنگ اور دوسرے سلسلوں (sequences) کے ساتھ بھی استعمال ہوتا ہے.

PHP:
>>> horsemen = ['war', 'famine', 'pestilence', 'death']
>>> 'pestilence' in horsemen
True
>>> 'debauchery' in horsemen
False
 
List Operations
جمع عامل (operator +) لسٹوں کو جوڑتا ہے۔
PHP:
>>> a = [1, 2, 3]
 
>>> b = [4, 5, 6]
 
>>> c = a + b
 
>>> print c
 
[1, 2, 3, 4, 5, 6]

* کے عامل سے ہم کسی بھی لسٹ کو دیے گئے نمبر کے برابر دہرا سکتے ہیں۔

PHP:
>>> [0] * 4
[0, 0, 0, 0]
 
>>> [1, 2, 3] * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
 
Slice Operations
سلائس آپریشن اسی طرح لسٹ پر بھی کام کرتا ہے جیسے وہ اسٹرنگ پر کام کرتا ہے۔

PHP:
>>> a_list = ['a', 'b', 'c', 'd', 'e', 'f']
>>> a_list[1:3]
['b', 'c']
>>> a_list[:4]
['a', 'b', 'c', 'd']
>>> a_list[3:]
['d', 'e', 'f']
>>> a_list[:]
['a', 'b', 'c', 'd', 'e', 'f']

لسٹ کا اشاریہ 0 سے شروع ہوتا ہے۔


کوڈ:
>>> a_list[1:3]

اس میں ہم نے بتایا ہے کہ اشاریہ 1 سے شروع کرو اور 3 سے پہلے تک جو اراکین ملیں وہ حاصل کر لو یعنی b اور c




 
range Function
ایسی لسٹ جس میں لگاتار مکمل اعداد ہی ہوں اسے بنانے کے لیے پائتھون میں ایک آسان طریقہ ہے اور وہ ہے رینج فنکشن کا استعمال ۔


PHP:
>>> range(1, 5)
 
[1, 2, 3, 4]

رینج کا فنکشن عموما دو دلائل(arguments) کے ساتھ کام کرتا ہے اور ایسی لسٹ واپس کرتا جس میں پہلے عدد سے لے کر دوسرے عدد سے ایک عدد پہلے تک کے تمام اعداد ہوتے ہیں۔

رینج فنکشن ایک دلیل (argument) کے ساتھ بھی کام کرتا ہے ۔ اس صورت میں لسٹ 0 سے شروع ہوتی ہے۔
PHP:
>>>range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

اگر تین دلائل(arguments) دیئے جائیں تو تیسری دلیل ظاہر کرتی ہے کہ دو مقداروں میں کتنا وقفہ ہوگا ، اسے step size کہتے ہیں یعنی دو مقداروں میں دورانیہ کا حجم۔
PHP:
>>> range(1, 10, 2)
[1, 3, 5, 7, 9]


اگر step size کی مقدار منفی ہو تو شروع والا عدد اختتامی عدد سے بڑا ہونا چاہیے۔ مندرجہ ذیل مثال میں 20 سے شروع ہوتی ہے لسٹ اور 5 عدد کی کمی کے ساتھ 4 سے پہلے رک جاتی ہے۔

PHP:
>>> range(20, 4, -5)
[20, 15, 10, 5]
 
List Mutable
لسٹ کو تبدیل کیا جا سکتا ہے برخلاف اسٹرنگ کے جسے تبدیل نہیں کیا جا سکتا۔

اسٹرنگ ناقابل تبدیل (strings are immutable)
لسٹ قابل تبدیل (lists are mutable)

اس مثال میں لسٹ کے تیسرے رکن کو بدل دیا گیا ہے۔

PHP:
>>> my_list = ['T', 'E', 'S', 'T']
>>> my_list[2] = 'X'
>>> my_list
['T', 'E', 'X', 'T']


PHP:
>>> a_list = ['a', 'b', 'c', 'd', 'e', 'f']
>>> a_list[1:3] = ['x', 'y']
>>> print a_list
['a', 'x', 'y', 'd', 'e', 'f']

لسٹ میں سے اراکین حذف کرنے کے لیے خالی لسٹ استعمال کی جا سکتی ہے۔

PHP:
>>> a_list = ['a', 'b', 'c', 'd', 'e', 'f']
>>> a_list[1:3] = []
>>> print a_list
['a', 'd', 'e', 'f']

لسٹ میں مخصوص نمبر اور جگہ پر اراکین کو گھسایا جا سکتا ہے اور اس کام کے لیے سلائس کے عمل کو استعمال کیا جا سکتا ہے۔

PHP:
 a_list = ['a', 'd', 'f']
>>> a_list[1:1] = ['b', 'c']
>>> print a_list
['a', 'b', 'c', 'd', 'f']
>>> a_list[4:4] = ['e']
>>> print a_list
['a', 'b', 'c', 'd', 'e', 'f']
 
List Deletion
لسٹ میں سے کسی رکن کو حذف کرنے کے لیے del کو استعمال کیا جاتا ہے ۔
PHP:
>>> a = ['one', 'two', 'three']
>>> del a[1]
>>> a
['one', 'three']

سلائس کے آپریشن کو استعمال کرکے مخصوص رینج میں اراکین کو ڈیلیٹ کیا جا سکتا ہے۔

PHP:
>>> a_list = ['a', 'b', 'c', 'd', 'e', 'f']
>>> del a_list[1:5]
>>> print (a_list)
['a', 'f']
 
Cloning List
اگر لسٹ کی کاپی بنانا مقصود ہو تو سلائسل آپریٹر کی مدد سے یہ کام کیا جا سکتا ہے۔

PHP:
>>> a = [1, 2, 3]
>>> b = a[:]
>>> print (b)
[1, 2, 3]


 
List and for Loop
for لوپ کا عمومی انداز مندرجہ ذیل ہے
PHP:
for VARIABLE in LIST:
    BODY

for لوپ مختصر اور جامع ہوتی ہے بامقابل while لوپ کے۔ اس میں لسٹ میں موجود اراکین کو ایک ایک کرکے پڑھا جاتا ہے اور بغیر کسی اضافی کوڈ کے ایک سے دوسرے رکن کی طرف آگے بڑھا جاتا ہے۔

مندرجہ ذیل مثال میں 20 نمبروں کی لسٹ کو for لوپ کے ذریعے پڑھا گیا ہے اور اگر نمبر 3 سے تقسیم ہو سکتا ہے تو اسے پرنٹ کروایا گیا ہے ۔

PHP:
for number in range(20):
    if number % 3 == 0:
        print(number)

PHP:
for fruit in ["banana", "apple", "quince"]:
    print ("I like to eat " + fruit + "s!")
 
I like to eat bananas!
I like to eat apples!
I like to eat quinces!

enumerate کی مدد سے نہ صرف لسٹ کے اراکین بلکہ اراکین کے اشاریہ(index) تک بھی رسائی حاصل کی جا سکتی ہے۔

PHP:
fruit = ["banana", "apple", "quince"]
 
for index, value in enumerate(fruit):
  print (index, value)
 
0 banana
1 apple
2 quince
 
Nested List
ایک لسٹ میں بھی ایک اور لسٹ ہو سکتی ہے اور وہ لسٹ کا رکن بن جاتی ہے۔

PHP:
>>>nested = ["hello", 2.0, 5, [10, 20]]
 
>>>print(nested[3])
[10,20]
 
>>>print(nested[3][1])
20

ایک اور لسٹ لسٹ در لسٹ کی مثال جس میں ویب سائٹ کا نام اور ایڈریس کی لسٹوں پر مبنی لسٹ

PHP:
>>>url = [["Udacity","www.udacity.com"],["Urdu Mehfil","www.urduweb.org/mehfil"]]
 
>>>print(url[0][0])
Udacity
 
>>>print(url[1][1])
www.urduweb.org/mehfil

کوڈ:
url[0][0]  #first element of first list
 Udacity
پہلے لسٹ کے پہلے رکن کو پرنٹ کروایا گیا ہے۔

کوڈ:
url[1][1] #second element of second list
www.urduweb.org/mehfil
دوسری دفعہ دوسری لسٹ کے دوسرے رکن کو پرنٹ کروایا گیا ہے۔
 
List and Strings

کسی بھی اسٹرنگ کو توڑ کر لسٹ میں بدلا جا سکتا ہے۔ مندرجہ بالا لسٹ میں اسپیس جو کہ ڈیفالٹ delimiter ہے اسٹرنگ کو لسٹ کے اراکین میں بدل دیتا ہے۔
PHP:
song = "The rain in Spain..."
 
print(str.split(song))
 
['The', 'rain', 'in', 'Spain...']

مندرجہ بالا مثال میں کسی بھی اسٹرنگ کو تقسیم کرنے کے لیے پہلے اسٹرنگ کا اصلی نام لکھ کر بھی اس پر split کا طریقہ (method) بھی طلب کیا جا سکتا ہے۔

PHP:
song = "The rain in Spain..."
 
print(song.split())
 
Output:
['The', 'rain', 'in', 'Spain...']
کسی بھی لسٹ میں موجود اراکین کو جوڑ کر ایک اسٹرنگ بنایا جا سکتا ہے۔ جوڑ کے لیے کوئی بھی حرف ہو سکتا ہے اور اسے پہلے لکھ کر پھر join کے فنکشن میں لسٹ کا نام دیا جاتا ہے اور نتیجہ ایک اسٹرنگ جو جوڑ کے ساتھ معرض وجود میں آ جاتی ہے۔

PHP:
words = ['crunchy', 'raw', 'unboned', 'real', 'dead', 'frog']
s = ' '.join(words)
print(s)
 
crunchy raw unboned real dead frog
 
پرانی string کلاس اب کارآمد نہیں بلکہ اسے آپ کوڈ میں استعمال کریں تو ایرر آتا ہے۔ اس لیے اب نئی str کلاس استعمال کریں جس پر بدقسمتی سے زیادہ مثالیں میسر نہیں مگر امید ہے کہ مستقبل میں بہتری آئے گی۔
 

ہادیہ

محفلین
مجھے اس سلسلے میں tree والے ٹاپک کے بارے میں جاننا ہے۔ڈیٹا سٹرکچر میں tree کیسے بناتے ہیں
 
Top