المعسكر التدريبي لتعليم بايثون – الحلقة الأولى Python Bootcamp – Episode 1

نتحدث اليوم عن القوائم في لغة بايثون، مثل القائمة التالية:

f=[1,12,20,3,4,2,6,7,1,1,8,10,2]

يمكننا أن نعرف طول القائمة بالأمر التالي:

len(f)

ويمكننا أن نعرف أول عنصر في القائمة:

f[0]

وآخر عنصر:

f[-1]

ويمكننا أن نأخذ منها أي عدد من العناصر، مثلا أول ثلاثة عناصر:

f[-3:]

أو آخر ثلاثة عناصر:

f[-3:]

ويمكنك أن تعكس تسلسل القائمة بهذا الأمر:

f.reverse()

ويمكنك أن تعرف مدى تكرار أي عنصر في القائمة بهذا الأمر، لمعرفة تكرار العنصر 1 على سبيل المثال:

f.count(1)

ويمكنك ترتيب عناصر القائمة على النحو المناسب لك، فعلى سبيل المثال بالنسبة لقائمة البلدان التالي:

countries=[‘Egypt’,’Tunisia’,’Algeria’,’Saudi Arabia’,’United Arab Emirates’,’Kuwait’,’Qatar’,’Syria’,’Lebanon’,’Jordan’,’Yemen’,’Morocco’]

يمكنك ترتيبها أبجديا بشكل عادي:

countries_sorted_alphabetically=sorted(countries)

كما يمكنك تحديد معايير أدق للترتيب، فيمكنك مثلا ترتيب القائمة على حسب طول اسم البلد:

countries_sorted_by_length=sorted(countries,key=lambda x:len(x),reverse=True)

ويمكنك أن تضيف عنصرا واحدا إلى القائمة على النحو التالي:

countries.append(‘Oman’)

كما يمكنك أن تضيف مجموعة من العناصر :

countries.extend([‘Libya’,’Iraq’,’Sudan’,’Bahrain’])

كما يمكنك أن تحدد كل عنصر في القائمة مع ترتيبه في القائمة:

enumerated_list=[v for v in enumerate(countries )]

وهناك خاصية بالغة الأهمية في لغة بايثون، وهي خاصية

list comprehension

وسنتحدث عنها بالتفصيل فيما بعد بإذن الله، ولكن للتعرف عليها باختصار فهي كما يلي:

comprehend=[v for v in enumerated_list if v[1]==’Algeria’]

comprehend=[v for v in enumerated_list if v[1][0]==’T’]

وفكرتها باختصار إنك تعرض كل عناصر القائمة، وتحدد شرطا معينا للعناصر التي ترغب في استخلاصها (في السطر الأول كانت المعلومات التي أريدها هي كل العناصر التي اسمها

‘Algeria’

أما في الثانية فكانت كل العناصر التي يبدأ اسمها بحرف T

وستعرض لنا كل البلدان التي تبدأ بهذا الحرف.

نختتم بخاصية مفيدة جدا تستلزم استدعاء وحدة

itertools

على النحو التالي:

from itertools import groupby

الموقف هو أن لدينا قائمة باسماء بعض الأشخاص، ونريد أن نضع كل من يشتركون في الحرف الأول من اسمهم في مجموعة واحدة، فمثلا:

people=[‘Mohamed’,’Mahmoud’,’Alaa’,’Ahmed’,’Saleh’,’Hamad’,’Hussein’,’Rashed’,’Raghad’,

‘Bassem’,’Baheeg’,’Salma’,’Yaseen’,’Randa’,’Samy’,’Gaber’]

أول خطوة أن نرتب هذه الأسماء الترتيب العادي (وهو هنا الترتيب الأبجدي):

people.sort()

ثم نستخدم هذا السطر، الذي سنشرح كل جزء فيه فيما بعد:

people_counted=[[key,list(group)] for key,group in groupby(people,lambda x:x[0])]

وسيكون عندنا قائمة تضم كل مجموعة من الأشخاص الذين يشتركون في الحرف الأول من الاسم:

[[‘A’, [‘Ahmed’, ‘Alaa’]], [‘B’, [‘Baheeg’, ‘Bassem’]], [‘G’, [‘Gaber’]], [‘H’, [‘Hamad’, ‘Hussein’]], [‘M’, [‘Mahmoud’, ‘Mohamed’]],

[‘R’, [‘Raghad’, ‘Randa’, ‘Rashed’]], [‘S’, [‘Saleh’, ‘Salma’, ‘Samy’]], [‘Y’, [‘Yaseen’]]]

يمكنك تحميل الكود بالكامل من هنا