recent
أخبار ساخنة

القوائم و المصفوفات في لغة بايثون 8

AM VIIP
الصفحة الرئيسية
القوائم و المصفوفات في لغة بايثون

المصفوفات في لغة بايثون

المصفوفات ( Arrays ) هي مجموعة من العناصر التي تكون من نفس النوع و هي شائعة في أغلب لغات البرمجة, لكنها في لغة بايثون ليست شائعة بكثرة, و إن في أي لغة برمجة مهم جداً القدرة على التعامل مع المعلومات الكثيرة أو ما يسمى البيانات الضخمة big data و يوجد الكثير من المعلومات أو البيانات يفترض علينا التعامل معها و إستخلاصها و طريقة التصرف بها.

يوجد في لغة بايثون 4 أنواع من المصفوفات وهي:

  1. Lists.
  2. Dictionaries.
  3. Tuple.
  4. Sets.

 

القوائم list في بايثون

القوائم Lists تعتبر نوع مهم من أنواع البيانات في بايثون و لإستخدامها يجب أن يكون لدينا مجموعة عناصر نخزنها في لسته مثل نصوص و ارقام و لإنشاء لستة نستعمل الأقواس المربعه [] و هي مرتبة قابلة للتعديل, أي هي مثل ليستة الطعام الموجودة في المطاعم و بها الأصناف.

مثال 1

>>> mylist = ["Muhammad", "amviip", "saja"]
>>> mylist
['Muhammad', 'amviip', 'saja']
>>> mylist2 = [1,2,3,4,5]
>>> mylist2
[1, 2, 3, 4, 5]
>>> mylist3 = [1, 2, 3, 4, 5, "wazeer"]
>>> mylist3
[1, 2, 3, 4, 5, 'wazeer']

كما نلاحظ في المثال نستطيع إنشاء لسته ببيانات نصية كما في mylist و لسته ببيانات رقمية كما في mylist2 و لسته مختلطة نصوص و ارقام كما في mylist3. كل عنصر من عناصر المصفوفة يترقم برقم يسمى index يبدأ من الصفر 0.

مثال 2

>>> mylist = [1,2,65,9,5]
>>> mylist[3]
9
>>> mylist[0:3]
[1, 2, 65]
>>> mylist[-1]
5
>>> len(mylist)
5
>>> max (mylist)
65
>>> min(mylist)
1
>>> list("1,2,3,4,5,6,7")
['1', ',', '2', ',', '3', ',', '4', ',', '5', ',', '6', ',', '7']
>>> list("amviip")
['k', 'a', 'i', 's', 's', 'a', 'r']

نلاحظ في البداية أنشأنا قائمة بإسم mylist و وضعنا بها بعض القيم ثم كتبنا mylist[3] وهذه تعني أعطنا الأندكس index رقم 3 من هذه المصفوفة و بما أن الأندكس يبدأ العد به من الصفر فكان الأندكس الثالث هو 9. ثم في السطر الذي يليه كتبنا mylist[0:3] أي اعطينا مجموعة الأندكسات من صفر حتى ثلاثة و معنى mylist[-1] أي أعطينا الأندكس الأخير ة إبدأ العد من الأخير و معنى len أي اعطينا طول هذه القائمة و max تعني معرفة أكبر رقم في هذه القائمة و min لمعرفة أصغر رقم في هذه القائمة.

و في النهاية أعطيناه مجموعة أرقام و قلنا لشل البايثون قم بتحويلها إلى قائمة list و بعده أعطيناه نص أيضاً و حوله لنا إلى قائمة.

مثال 3

>>> mylist = [1,2,3,5,7,6]
>>> mylist [2] = 4
>>> mylist
[1, 2, 4, 5, 7, 6]
>>> mylist.append (7)
>>> mylist
[1, 2, 4, 5, 7, 6, 7]
>>> mylist.count (2)
1
>>> mylist.append (2)
>>> mylist.append (2)
>>> mylist
[1, 2, 4, 5, 7, 6, 7, 2, 2]
>>> mylist.count (2)
3
>>> mylist.index (4)
2
>>> mylist.insert (0,2)
>>> mylist
[2, 1, 2, 4, 5, 7, 6, 7, 2, 2]

قمنا بإنشاء لستة و بها عدة عناصر ثم بدأنا بتنفيذ عدة عمليات عليها و العمليات هي:

  • العملية الأولى كتبنا mylist [2] = 4 و هذ تعني قم بإستبدال الأندكس رقم 2 الذي هو 3 استبدله بالرقم 4.
  • العملية الثانية كتبنا mylist.append(7) و هذا يعني قم بإضافة الرقم 7 إلى هذه القائمة و سوف يضاف في النهاية.
  • العملية الثالثة كتبنا mylist.count (2) يعني كم رقم 2 في هذه القائمة و ارجع لنا 1 أي توجد اثنان واحدة.
  • العملية الثالثة و الرابعة كتبنا mylist.append(2) كتبناها مرتين أي اضف الرقم 2 مرتين في هذه اللستة.
  • العملية الخامسة قمنا بالإستعلام كم رقم 2 في هذه اللستة و رجع لنا 3 و بالطبع يوجد رقم 2 ثلاث مرات.
  • العملية السادسة mylist.index(4) أي ما هو الأندكس للرقم 4 في هذه اللستة و ارجع لنا 2 أي أن الرقم 4 ترتيبه 2 في القائمة.
  • العملية السابعة mylist.insert(0,2) أي قم بإضافة الرقم 2 في الأندكس الأول الذي ترتيبه 0.

مثال 4

>>> mylist = [5,6,9,1,2,8,8,9,2]
>>> mylist.pop()
2
>>> mylist.remove(8)
>>> mylist
[5, 6, 9, 1, 2, 8, 9]
>>> mylist2 = [1,2,3,4,6,7,5,8]
>>> mylist2.sort()
>>> mylist2
[1, 2, 3, 4, 5, 6, 7, 8]

الدالة pop() حذف عشوائي من قيم المصفوفة مع طباعة القيمة المحذوفة.

الدالة remove() حذف محدد من داخل المصفوفة.

الدالة sort() ترتيب أبجدي بحال كان نص و ترتيب تصاعدي بحال كان ارقام.

 

المجموعات Tuple في بايثون

الـ Tuple لا تفرق كثيراً عن Lists لكن اللسته اقوى منها ببعض الإحتياجات, و هي مصفوفة ذو حجم ثابت و يمكن من خلالها تخزين قيم مختلفة الأنواع في نفس الوقت, لكن الـ tuples لا نستطيع أن نضيف عنصر زائد او نغير و يكون الأمر مقيد و اقواسها دائرية () و هي مرتبة و غير قابلة للتعديل.

طريقة إنشاء Tuple بالشكل الآتي

x = ("muhammad" , "amviip" , "saja")
print (x)
#output ('muhammad', 'amviip', 'saja')

مثال 1

x = tuple ("123456")
('1', '2', '3', '4', '5', '6')

أنشأنا tuple و وضعنا بها مجموعة  أرقام عرفناها على أنها نصوص وضعناها بين علامات تنصيص, و عند إستخدام أمر الطباعة لهذا المثال سيكون ناتجه بالشكل الآتي

print (x)
('1', '2', '3', '4', '5', '6')

كما لاحظنا عند إستخدام أمر الطباعة قد طبع لنا الأرقام الموجودة في هذا الـ Tuple كل رقم على حدى بداخل علامات تنصيص.

 

إستخدام الأمر count لمعرفة العناصر المتشابهة

مثال 2

>>> t = ("a","b","c","a")

في هذا المثال قمنا بإنشاء متغير وهو t ووضعنا به بعض الأحرف الإنجليزية, و عند إستخدام أمر count و الطلب منه حرف a, سيكون الناتج بالشكل

>>> t.count ("a")

عند الضغط على زر Enter سوف يطبع لنا الرقم 2 أي أنه يوجد حرفين a في هذا المثال.

 

معرفة تمركز العنصر index

>>> t = ("a","b","c","a")

قمنا بإنشاء متغير وهو t ووضعنا به بعض الأحرف الإنجليزية, و عند إستخدام أمر index و الطلب منه معرفة تمركز الحرف b, سيكون الناتج بالشكل

>>> t.index("b")

عند الضغط على زر Enter سوف يطبع لنا رقم 1 أي أنه مكان تمركز الحرف b في هذه المصفوفة.

 

التقطيع في Tuple

>>> t = ("a","b","c","a")

لتقطيع جزء من السلسلة النصية في Tuple نقوم بإستخدام النقطتين و نقوم بكتابة الإندكس البادئ و الإندكس النهاية, سوف نقوم بالتقطيع من 0 حتى 2 من هذه السلسلة و ستكون بالشكل.

>>> t [0:2]

عندما نقوم بالضغط على زر Enter لتنفيذ الأمر سوف تكون النتيجة بالشكل

('a', 'b')

فإذا قمنا بكتابة الأمر لتعديل قيمة ما من هذه السلسلة

t[0] = "d"

سوف يعطينا خطأ بالشكل الآتي

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

أعطانا الخطأ بسبب أن من قوانين Tuple أنها غير قابلة للتعديل.

 

القواميس dictionaries في بايثون

الكلاس dict يستخدم به الأقواس المعكوفة {} ويتألف من مفتاح و قيمته كالقواميس العربية الكلمة و معناها. وهو غير مرتب unorderd و قابل للتعديل على محتواه changeble.

الشكل العام للقواميس في بايثون

x = {key : value , key2 : value2}

مثال 1

>>> info = {'name':'data', 'age':26}
>>> info ["name"]
'data'
>>> info ["age"]
26

في البداية عرفّنا متغير info و اعطيناه قيم و مفاتيح لنحصل على قاموس, وبعد ذلك طلبنا key بيانات اول قيمة وهي name و اعطانا القيمة value و هي data, ثم طلبنا من البرنامج طباعة قيم القاموس و طبعها لنا 26.

 

طباعة القيم في الكلاس dict

من أجل طباعة القيم فقط من مصفوفة dict في بايثون نقوم بإستخدام الأمر .values بعد إسم المتغير الذي يحمل القاموس.

>>> info = {'name':'data', 'age':26}
>>> info.values()

قمنا بإنشاء قاموس info و في هذا القاموس قيمتين و أردنا طباعتهم عن طريق الأمر info.values() و هذا الأمر عند الضغط على زر Enter سوف تكون النتيجة.

dict_values(['data', 26])

كما لاحظنا لقد تمت طباعة فقط القيم الموجودة في هذا القاموس.

 

طباعة المفاتيح في الكلاس dict

من أجل طباعة المفاتيح فقط من مصفوفة dict في بايثون نقوم بإستخدام الأمر .keys() بعد إسم المتغير الذي يحمل القاموس.

>>> info = {'name':'data', 'age':26}
>>> info.keys()

قمنا بإنشاء قاموس info و في هذا القاموس مفتاحين و أردنا طباعتهم عن طريق الأمر info.keys() و هذا الأمر عند الضغط على زر Enter سوف تكون النتيجة.

dict_keys(['name', 'age'])

 

الدوال التابعة للكائن dict في بايثون

>>> info = {'name':'data' , 'age':27}
>>> info.clear()
>>> info
{}
>>> ahmed = {'name':'amviip' , 'age':22}
>>> saja = ahmed.copy()
>>> saja
{'name': 'amviip', 'age': 22}
>>> saja.fromkeys("j")
{'j': None}
>>> d2 = {"name" : "amviip" , "age":22}
>>> d2.get("age")
22
>>> ("age" in d2)
True
>>> d2.setdefault("d","a")
'a'
>>> d2
{'name': 'amviip', 'age': 22, 'd': 'a'}
>>> d2.items()
dict_items([('name', 'amviip'), ('age', 22), ('d', 'a')])
  1. الدالة clear() تقوم بحذف محتويات القاموس أي تحذف جميع العناصر.
  2. الدالة copy() تقوم بنسخ محتويات القاموس amviip إلى قاموس جديد بإسم saja.
  3. الدالة fromkeys() تقوم بإنشاء قاموس جديد من المعطيات التي يحددها المستخدم, أنشأ قاموس j و قيمته فارغة.
  4. الدالة get() تعطينا القيمة المحددة في القاموس و أعطتنا قيمة age التي حددناها.
  5. الدالة setdefault() تعيد قيمة المفتاح المحدد و إن لم يكن موجوداً تنشئ قاموس قيمة و مفتاح و هنا أنشأت المفتاح d و القيمة a.
  6. الدالة items() تعيد تهئية عرض القاموس مفتاح و قيمة كل واحدة في قوسين مربعين على حدى.

 

الكلاس set في بايثون

الـ set هي عبارة عن مصفوفة ليس لها حجم ثابت و إنما متغير, و يمكنها تخزين قيم من مختلف الأنواع في وقت واحد أي مثل الأرقام و النصوص و البيانات العشرية و غيرها, و لا يمكن تبديل أو حذف قيمها بشكل مباشر, و لا يمكنها أن تحتوي على قيم مكررة يعني إذا وضعت فيها نفس القيمة مرتين فإنه سوف يتم تخزين قيمة واحدة و ليس قيمتين.

و تعتبر set غير مرتبة أي عشوائية و ليس لها index و يكثر إستخدامها  في إنشاء أو توليد لستة باسوردات قوية و هي قابلة للتعديل changable و يتم إستخدام الأقواس المعكوفة {} المستخدمة مع الكلاس dict و بداخل هذه الأقواس يمكنك تمرير القيم بشكل مباشر بشرط وضع فاصلة بين كل عنصرين.

مثال 1

>>>num = {1, 2, 3, 5, 6, 8, 9}

أنشأنا لسته set و هي num ووضعنا بها مجموعة أعداد صحيحة فقط, و عندما نكتب أمر الطباعة لهذا الأمر سوف يكون.

>>> print(num)

و سوف نحصل على النتيجة

{1, 2, 3, 5, 6, 8, 9}

مثال 2

>>>names = {'Muhammad', 'Ahmed', 'Saja'}

أنشأنا لسته set و هي names ووضعنا بها مجموعة بيانات نصية فقط, و عندما نكتب أمر الطباعة لهذا الأمر سوف يكون.

>>> print(names)

و سوف نحصل على النتيجة

{'Muhammad', 'Ahmed', 'Saja'}

 

إضافة عنصر جديد في الـ set

>>>names = {'Muhammad', 'Ahmed', 'Saja'}

لإضافة قيمة لهذه المصفوفة نستخدم الدالة add(), سوف نضيف قيمة جديدة لهذه المصفوفة بالشكل

>>>names.add("muhammal")

عندما نقوم بتنفيذ هذا الكود عن طريق الأمر

>>>print(names)

سوف يقوم بإضافة القيمة لنا بشكل عشوائي

{'muhammal', 'Ahmed', 'Muhammad', 'Saja'}

كما لاحظنا لقد قام بإضافة القيمة الجديدة بشكل عشوائي في هذه اللستة. 

google-playkhamsatmostaqltradent