مجموعات البيانات التسلسلية ( Lists, Tuples )

مجموعات البيانات التسلسلية في Python
(Lists, Tuples )

ما هي مجموعات البيانات التي توفرها Python ..؟؟!! و ماذا نعني بالبيانات التسلسلية في بايثون..؟! و أين تصنف كل من List و Tuple بين مجموعات البيانات ..؟؟! و ما طريقة العمل مع البيانات التسلسلية من List و Tuple من خلال تعليمات Python...!!! وماهو الفرق بين مجموعات البيانات التسلسلية List و Tuple في بايثون..؟!!

مجموعات البيانات التسلسلية  ( Lists, Tuples )

في هذا المقال سنتحدث عن نوع من أنواع مجموعات البيانات في Python وهي البيانات التسلسلية في بايثون . سنتناول كيفية استخدام البيانات التسلسلية مثل list و tuple في Python، سنتعرف على طريقة إنشاء لكل من list و tuple وكيفية الوصول إلى العناصر في البيانات التسلسلية من الأنواع list و tuple ، بالإضافة إلى العديد من العمليات التي يمكن تنفيذها على البيانات التسلسلية من الأنواع list و tuple من خلال تعليمات لغة Python . لنبدأ...

في هذا المقال سنتعرف على:


ماهي مجموعات البيانات في Python

ذكرنا في مقال أنواع البيانات في Data Types in Python أن مجموعات البيانات هي حاويات تضم مجموعة من البيانات وتوفر Python مجموعة متنوعة من مجموعات البيانات يمكن تقسيمها الى فئات لكل فئة من هذه الفئات خصائصها Properties ودوال Methods للعمل معها وهي في Python تعبر امثلة على للـ Data Structure .و هذه الفئات التالي:

في هذا المقال سنشرح ونفصل الفئة الأولى وهي البيانات التسلسلية Sequence Types في Python.


البيانات التسلسلية في Sequence Types in Python

ونعني بمجموعات البيانات التسلسلية في بايثون مجموعات البيانات التي تكون عناصرها مرتبة بشكل متسلسل و تتمثل أنوع البيانات التسلسلية في Python في عدة أشكال وهي:

لنبدأ بمناقشة كلاً من هذه الاشكال..


النطاقات Ranges

احدى الطُرق لإنتاج بيانات متسلسلة في بايثون هو استخدام الدالة range() وهي دالة مضمنة في Python تُرجع سلسلة من الأرقام الصحيحة التي تبدأ من 0 وبزيادة 1 أو أكثر حتى تصل إلى رقم محدد. بهذا تقوم الدالة range() بإنتاج نطاق معين من البيانات التسلسلية هذا النطاق يعد من نوع range class. وتعرفنا عليها في مقال سابق عن الحلقات التكرارية Loops في Python حيث استعرضنا استخدم الدالة range() مع حلقات التكرار for and while لإنشاء سلسلة من الأرقام. و فيما يلي بناء جملة range:

range (start, stop, step)

بحيث تمثل الـ Parameters التالي:

  • نقطة البدء start: هو رقم صحيح لتحديد نقطة البداية للنطاق وهو اختياري ،حيث أن القيمة الافتراضية له =0 .
  • نقطة التوقف stop: هو ايضاً رقم صحيح لتحديد نقطة النهاية للنطاق وهو إلزامي .
  • مقدار الخطوة step: وهو رقم صحيح يمثل مقدار الانتقال للتسلسل في النطاق وهو اختاري حيث ان القيمة الافتراضية له 1 أي انتقل بمقدار مساوي 1.

لاحظ /ي طريقة إنتاج البيانات التسلسلية بواسطة الدالة range في المثال التالي :

...........
x = range(5)
for i in x: print(i) # print numbers from 0 to 4
print("--------------------")
x = range(5, 10)
for i in x: print(i) # print numbers from 5 to 9
print("--------------------")
x = range(0 ,20, 5)
for i in x: print(i) # print numbers from 5 to 20 with step jumping 5 numbers each time
print("--------------------")
print(type(x))
...........


القوائم Lists في Python

و من ضمن البيانات التسلسلية في بايثون القوائم Lists وهي أكثر أنواع البيانات المركبة تنوعًا. و تُستخدم قائمة list لتخزين عناصر متعددة في متغير واحد. و تحتوي القائمة list في Python على عناصر مفصولة بفواصل و محاطة بأقواس مربعة [ ...] . إلى حد ما ، تشبه قوائم Python المصفوفات في لغة C. ولكن الاختلاف هنا بينها في أن العناصر التي تنتمي إلى قائمة list في بايثون يمكن أن تتكون من أنواع بيانات مختلفة حيث أن المصفوفة في لغة C تخزن العناصر من نوع بيانات واحد .

عناصر القائمة List مرتبة وقابلة للتغيير وتسمح بقيم مكررة. ومرتبة تعني أن عناصر القائمة مفهرسة Indexing ، العنصر الأول بفهرس Index [0] ، العنصر الثاني به فهرس [1] ..إلخ. و مع الفهرسة Indexing التي تبدأ من 0 في بداية القائمة وتستمر في الزيادة حتى نهاية القائمة. يمكن أيضاً العمل مع الفهرسة العكسية Negative indexing التي البدء من نهاية القائمة List حيث 1- يشير إلى العنصر الأخير ، 2- يشير إلى العنصر قبل الأخير...إلخ.

وبما أن أن List تحتوي القائمة على أنواع مختلفة من البيانات فيمكن أن تكون هذه البيانات رقمية أو من الأنواع strings أو حتى Lists أو Tuples ويوضح المثال التالي طريقة إنشاء القائمة list في Python وطريقة الوصول للعناصر list في بايثون:


...........
#The list contains different types of data like numbers or strings or even lists or tuples
list = [1,2, 3, "Hi", "hello", [5,6,"OK"], (1,2,3),8 ]
print(list[7])
print(list[-1])
...........

لتكـن النتيجـة

8
8

ويمكن اقتطاع القائمة List عن طريق تحديد نطاق من عناصر القائمة وهذا بتحديد مكان بدء النطاق ومكان إنهائه. و عند تحديد النطاق، ستكون القيمة المعادة قائمة جديدة بالعناصر المحددة. ويتم هذا باستخدام عامل تشغيل [ : ] ويوضح المثال التالي الطريقة :

...........
list = [1,2, 3, "Hi", "hello", [5,6,"OK"], 8]
print(list[:3])
print(list[3:5])
...........

لتكـن النتيجـة

[1, 2, 3]
['Hi', 'hello']

خصائص القوائم Lists في Python

تتميز list بالخصائص التالية :

  • الترتيب عندما نقول أن القوائم مرتبة ، فهذا يعني أن العناصر لها ترتيب محدد، ولن يتغيرهذا الترتيب فعند إضافة عناصر جديدة إلى القائمة، فسيتم وضع العناصر الجديدة في نهاية القائمة.
  • تسمح بالتكرار نظرًا لأن القوائم مفهرسة، يمكن أن تحتوي القوائم على عناصر بنفس القيمة.
  • القوائم lists قابلة للتغيير، مما يعني أنه يمكننا تغيير وإضافة وإزالة العناصر الموجودة في القائمة list بعد إنشائها. حيث يمكن تغيير قيمة عنصر معين أو مجموعة عناصر كما يتضح من المثال التالي :
...........
list = [1,2, 3, "Hi", "hello", [5,6,"OK"], 8]
list[1] = 4
print(list)
...........

لتكـن النتيجـة

[1, 4, 3, 'Hi', 'hello', [5, 6, 'OK'], 8]

العمليات على القوائم Lists

في بايثون مع القائمة list يمكن استخدام معامل الجمع (+) لجمع قائمتين في قائمة واحدة كما يتضح في المثال التالي:

...........
list1 = [3,4,5]
list2 = [7,8,9]
print(list1 +list2)
...........

لتكـن النتيجـة

[3, 4, 5, 7, 8, 9]

كما تتيح بايثون استخدام علامة (*) كعامل تكرار للقائمة list. حيث تكرر عناصر القائمة عدد معين من المرات كما يتضح في المثال التالي :


...........
list1 = [3,4,5]
list2 = [7,8,9]
print(list1 * 2)
print(list2 * 3)
...........

لتكـن النتيجـة

[3, 4, 5, 3, 4, 5]
[7, 8, 9, 7, 8, 9, 7, 8, 9]


دوال العمل مع القوائم Lists

1- دوال إضافة العناصر القائمة List

توفر بايثون عدد من الدوال التي تعمل على إضافة العناصر الى القائمة List ولكل منها طريقة عمل ويوضح الشكل التالي:

the functions for adding item to the list in Python   دوال لإضافة العناصر الى القائمة في  بايثون

وهنا أمثلة توضح طريقة عمل دوال إضافة العناصر إلى List في بايثون:

...........
list1 = [3, 4, 5]
list2 = [8, 7, 9]
list1.append(8)
print(list1)
list1.insert(2, 9)
print(list1)
list1.extend(list2)
print(list1)
...........

لتكـن النتيجـة

[3, 4, 5, 8]
[3, 4, 9, 5, 8]
[3, 4, 9, 5, 8, 8, 7, 9]

دوال لحذف العناصر من القائمة List

توفر Python عدد من الدوال التي تعمل على حذف العناصر من القائمة List ولكل منها طريقة عمل تتضح في الشكل التالي:


دوال حذف العناصر من القوائم في  بايثون the functions for removing items from list inPython

وهنا أمثلة على طريقة عمل دوال حذف العناصر من List في بايثون:

...........
list = [1,2, 3, "Hi", "hello", [5,6,"OK"], 8]
print(list)
list.remove(3)
print(list)
list.pop(4)
print(list)
list.pop()
print(list)
list.clear()
print(list)
del(list)
print(list)
...........

لتكـن النتيجـة

 [1, 2, 3, 'Hi', 'hello', [5, 6, 'OK'], 8]
[1, 2, 'Hi', 'hello', [5, 6, 'OK'], 8]
[1, 2, 'Hi', 'hello', 8]
[1, 2, 'Hi', 'hello']
[]
<class 'list'>


مجموعة البيانات Tuples

تعبر Tuple في Python عن حاوية تضم مجموعة من البيانات التسلسلية أي مجموعة من العناصر المرتبة وغير قابلة للتغيير. وهي تمامًا مثل القوائم Lists . الاختلافات بين Tuples و Lists هي أنه لا يمكن تغيير Tuple على عكس List.

وتستخدم Tuple الأقواس (...) عند إنشاء Tuple بينما تستخدم List الأقواس المربعة [...] . و يعد إنشاء Tuple أمرًا بسيطًا مثل وضع قيم مختلفة الأنواع مفصولة بفواصل.

ويمكن أن تضمن Tuple أنواع مختلفة من البيانات أي يمكن أن تكون رقمية أو من الأنواع strings أو حتى lists أو tuples، وعندما نريد تعريف Tuple فارغة نكتب قوسين لا يحتويان على أي شيء. ويوضح المثال التالي طريقة إنشاء tuple في Python:

...........
tuple1 = () # an empty tuple 
# tuples as lists can contain different types of data like numbers or strings or even lists or tuples
tuple12 = (1,2, 3, "Hi", "hello", [5,6,"OK"], (1,2,3), 8)
...........

و لإنشاء Tuple تحتوي على قيمة واحدة ، يجب علينا تضمين فاصلة comma ( , ) حتى لو لم توجد إلا قيمة واحدة فقط.

...........
tuple0 = (1) # integer type
print(type(tuple0))
tuple1 = (1,)  # tuple type
print(type(tuple1))
...........

في Python أي مجموعة البيانات من عناصر متعددة ، مفصولة بفواصل ، مكتوبة بدون رموز تعريفية ، مثل الأقواس المربعة [..] ، والأقواس (...) ، وما إلى ذلك، افتراضيًا تصنف هذه المجموعة الى نوع Tuples ، كما هو موضح في المثال التالي:

...........
x = 'Hi', 'Welcome', 1, 2, 3, True
print(type(x)) # x  is belong to the <class 'tuple'>
...........

مجموعات البيانات التسلسلية تتشابه فكما في List عناصر Tuple مفهرسة حيث تبدأ من العنصر الأول في Tuple عند 0 والثاني 1 …الخ ، كما يمكن تقطيعها تماماً مثل العمل مع List. و للوصول إلى القيم الموجودة في Tuple ، تستخدم الأقواس المربعة لإرجاع جزء من العناصر وهذا بواسطة الـ Index للحصول على القيمة المتاحة في هذا Index . على سبيل المثال :

...........
tuple = (1,2, 3, "Hi", "hello", [5,6,"OK"], 8)
print(tuple[6])
print(tuple[-1])
print(tuple[:3])
print(tuple[3:5])
...........

لتكـن النتيجـة

8
8
(1, 2, 3)
('Hi', 'hello')

أيضاً، تشترك مجموعات البيانات التسلسلية في بايثون في استخدام المعاملات (+) و (*) والمقصود هنا الجمع والتكرار ،فكما في List ايضاً تستجيب مجموعات Tuples و تكون النتيجة عبارة عن مجموعة Tuple جديدة .كما يتضح في المثال التالي:

...........
tuple1 = (3, 4, 5)
tuple2 = (7, 8, 9)
print(tuple1 + tuple2)
print(tuple1 * 2)
print(tuple2 * 3)
...........

لتكـن النتيجـة

(3, 4, 5, 7, 8, 9)
(3, 4, 5, 3, 4, 5)
(7, 8, 9, 7, 8, 9, 7, 8, 9)

التحديث Update Tuples

تعتبر مجموعات Tuples غير قابلة للتغيير ، مما يعني أنه لا يمكننا تغيير العناصر أو إضافتها أو إزالتها بعد إنشاء المجموعة. ولكي نتمكن من إجراء تحديث على Tuple نستخدم طريقتين:

  • تُستخدم هذه الطريقة عندما نريد اضافة عناصر على Tuple وهي انشاء Tuple جديد للعناصر المراد اضافتها ثم دمجها مع Tuple الأول باستخدام المعامل (+) كما أوضحنا أعلاه .
  • والطريقة الثانية هي تحويل مجموعة Tuple الى List بواسطة الدالة ()list ثم التعامل معها من خلال الدوال الخاصة بالإضافة والحذف للـ List و لإعادة المجوعة الى نوع Tuple مرة أخرى نستخدم الدالة ()tuple لنرى مثال :
...........
t = (1,2, 3, "Hi", "hello", [5,6,"OK"], 8)
y = list(t) # list() function to convert to list
y.pop()
y.insert(1,5)
t = tuple(y) # tuple() function to convert yo tuple
print(t)
...........

لتكـن النتيجـة

(1, 5, 2, 3, 'Hi', 'hello', [5, 6, 'OK'])

التفريغ Unpacking Tuples

عند إنشاء Tuple، و تعيين قيمًا لها. فإننا نقوم بما يسمى بـ "التعبئة Packing" على مجموعة Tuple ، وفي Python ، يُسمح لنا أيضًا باستخراج القيم مرة أخرى إلى متغيرات. هذا يسمى بـ "التفريغ Unpacking" لنأخذ مثال:

...........
fruits = ("Bananas", "Apples",   "Grapes")
(red, yellow, green) = fruits
print(yellow)
print(red)
print(green)
...........

لتكـن النتيجـة

Apples
Bananas
Grapes

نلاحظ في المثال السابق تساوي عناصر Tuple مع عدد المتغيرات وهنا نذكر أنه يجب أن يتطابق عدد المتغيرات مع عدد العناصر في Tuple، وإذا لم يكن الأمر كذلك ، فيجب عليك استخدام علامة النجمة (*) لتجميع القيم المتبقية كقائمة List . وإذا كان عدد المتغيرات أقل من عدد عناصر tuple، يمكنك إضافة (*) إلى اسم المتغير وسيتم تعيين القيم إلى المتغير كقائمة list لاحظ /ي النتائج للمثال التالي:

...........
fruits = ("Bananas", "Apples",  "Grapes", "Kiwis")
(red, yellow, *green) = fruits
print(yellow)
print(red)
print(green)
...........

لتكـن النتيجـة

Apples
Bananas
['Grapes', 'Kiwis']

ويتم إضافة علامة النجمة إلى اسم المتغير الذي نريد تجميع القيم المتيقة إليه ، هنا ستقوم Python بتعيين هذه القيم للمتغير حتى يتطابق عدد القيم المتبقية مع عدد المتغيرات المتبقية. لاحظ / المثال التالي:

...........
fruits = ("Bananas",  "Grapes", "Kiwis","Apples" )
(yellow, *green, red) = fruits
print(yellow)
print(green)
print(red)
...........

لتكـن النتيجـة

Bananas
['Grapes', 'Kiwis']
Apples

ملاحظة : تعمل خاصية التفريغ Unpacking على مجموعات البيانات التسلسلية فتعمل مع List تماماً كما تعمل مع Tuple.



الدوال التي يمكن تعمل مع Tuple و List

تتشارك مجموعات البيانات التسلسلية List و Tuple بعض الدوال التي تعمل معها ومن هذه الدوال التالي :

len, sorted, count, copy, index, max, min functions

وهنا أمثلة على طريقة استخدام هذه دوال مجموعات البيانات التسلسلية list & tuple :

دوال المجموعات التسلسلية مع القوائم List

...........
list = [1, 2, 3, "Hi", "hello", [5,6,"OK"], (1,2,3), 8 ]
list1 = [3, 4, 5]
list2 = [8, 7, 9]
x = list.count([5,6,"OK"]) #count() returns the frequency of this item the in the list
print(x ) 
print("--------------------")
x = list.index([5,6,"OK"])   #Index() returns the index of this item
print(x)
print("--------------------")
myLisit = list.copy() #copy() makes a new list that copy from original list 
print(myLisit)
print("--------------------")
print(len(list)) # len() for returns the number of the list's items (the list length
print("--------------------")
print(max(list2))
print("--------------------")
print(min(list2))
print("--------------------")
print(sorted(list2))
print(sorted(list2, reverse= True)
...........

لتكـن النتيجـة

1
--------------------
5
--------------------
[1, 2, 3, 'Hi', 'hello', [5, 6, 'OK'], (1, 2, 3), 8]
--------------------
8
--------------------
9
7
[7, 8, 9]
[9, 8, 7]

دوال المجموعات التسلسلية مع Tuples

...........
tuple1 = (1,2, 3, "Hi", "hello", [5,6,"OK"], (1,2,3), 8)
tuple2 = (3, 4, 5)
tuple3 = (8, 7, 9)
print(tuple1.count("Hi")) 
print("--------------------")
print(tuple1.index("Hi"))
print("--------------------")
print(len(tuple1))
print("--------------------")
print(tuple (sorted(tuple3)))
print("--------------------")
print(tuple (sorted(tuple3, reverse=True)))
print("--------------------")
print(max(tuple2))
print("--------------------")
print(min(tuple2))
...........

لتكـن النتيجـة

1
--------------------
4
--------------------
8
--------------------
(7, 8, 9)
--------------------
(9, 8, 7)
--------------------
5
--------------------
3

جميع الأمثلة لهذا المقال متوفرة هنا.


إلى هنا ينتهي هذا المقال الذي تكلم عن البيانات التسلسلية في لغة Python تعرفنا فيه على مفهوم البيانات التسلسلية في بايثون. وماهي أنواع البيانات التسلسلية وهما List و Tuple. عرفنا الفرق بين list و tuple في بايثون. وشرحنا بشكل مفصل كلاً من list و tuple من حيث طريقة التعريف والدوال التي تعمل معها من خلال تعليمات Python.



إرسال تعليق

فضلاً اترك تعليق
موافقة ملفات تعريف الارتباط
لتحسين تجربتك… يستخدم موقعنا ملفات تعريف الارتباط (Cookies)
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.