جاري تحميل المحتوى...
تعلمت في الفصل السابق أن النص يمكن أن يحتوي على عدة حروف مرتبة، وأنك تستطيع الوصول إلى هذه الحروف باستخدام الفهرسة والتقطيع. في هذا الفصل ستستخدم أفكارًا مشابهة مع القوائم وTuples، لكن بدل تخزين حروف نص واحد ستتمكن من تخزين عدة قيم والتعامل معها بصورة منظمة.
إذا أردت تخزين ثلاثة أعداد، يمكنك استخدام ثلاثة متغيرات منفصلة:
first = 10
second = 20
third = 30
لكن عندما تمثل القيم مجموعة مرتبطة ببعضها، تكون List أكثر تنظيمًا.
numbers = [10, 20, 30]
print(numbers)
تحتوي numbers هنا على ثلاث قيم مرتبة داخل List واحدة.
List هي مجموعة مرتبة من القيم. تكتب العناصر بين الأقواس المربعة []، وتفصل بينها الفواصل.
numbers = [10, 20, 30]
names = ["Ali", "Sara", "Omar"]
print(numbers)
print(names)
يفضل في أمثلة المبتدئ أن تكون القيم متجانسة وواضحة، مثل مجموعة أعداد أو مجموعة أسماء.
يمكن أيضًا إنشاء List لا تحتوي على عناصر:
items = []
print(items)
يمكن إضافة عناصر إليها لاحقًا.
تستخدم List الفهرسة بالطريقة نفسها التي تعلمتها مع النصوص. يبدأ أول عنصر عند الفهرس 0.
numbers = [10, 20, 30]
print(numbers[0])
print(numbers[1])
الناتج هو 10 ثم 20.
numbers[0] يعطي العنصر الأول.numbers[1] يعطي العنصر الثاني.numbers[2] يعطي العنصر الثالث.يمكن استخدام فهرس سالب للعد من نهاية List. يشير -1 إلى آخر عنصر.
numbers = [10, 20, 30]
print(numbers[-1])
print(numbers[-2])
الناتج هو 30 ثم 20.
يمكن استخدام Slicing للحصول على جزء من List. مثل النصوص، تكون قيمة start مشمولة بينما تكون قيمة stop غير مشمولة.
numbers = [10, 20, 30, 40, 50]
print(numbers[1:4])
الناتج هو [20, 30, 40]. يبدأ التقطيع من العنصر عند الفهرس 1 ويتوقف قبل العنصر عند الفهرس 4.
numbers = [10, 20, 30, 40, 50]
print(numbers[:3])
print(numbers[2:])
print(numbers[::2])
النتائج هي:
[10, 20, 30]
[30, 40, 50]
[10, 30, 50]
لا نحتاج هنا إلى تقطيعات معقدة؛ القواعد الأساسية هي نفسها التي تعلمتها مع Strings.
len()تعيد len() عدد العناصر الموجودة داخل List.
numbers = [10, 20, 30]
print(len(numbers))
الناتج هو 3.
على عكس String التي تعلمت أنها لا تسمح بتغيير حرف منفرد مباشرة، تسمح List بتغيير عنصر موجود باستخدام الفهرس.
numbers = [10, 20, 30]
numbers[1] = 99
print(numbers)
الناتج هو [10, 99, 30].
نقول إن List هي Mutable، أي يمكن تغيير محتواها بعد إنشائها.
يمكن مثلًا:
لا تحتاج في هذه المرحلة إلى تفاصيل داخلية عن الذاكرة أو هوية الكائن؛ المهم هو فهم السلوك العملي.
append()تضيف append() عنصرًا واحدًا إلى نهاية List.
names = ["Ali", "Sara"]
names.append("Omar")
print(names)
الناتج هو ["Ali", "Sara", "Omar"].
لاحظ أن List نفسها تغيرت.
insert()تستخدم insert(index, value) لإضافة عنصر في موضع معين.
names = ["Ali", "Omar"]
names.insert(1, "Sara")
print(names)
توضع "Sara" عند الفهرس 1، فتكون النتيجة ["Ali", "Sara", "Omar"].
remove()تستخدم remove(value) لحذف قيمة محددة من List.
numbers = [10, 20, 30]
numbers.remove(20)
print(numbers)
الناتج هو [10, 30].
في الأمثلة الحالية نفترض أن القيمة التي نريد حذفها موجودة بالفعل في List.
pop()تستخدم pop(index) لحذف العنصر الموجود عند فهرس محدد، كما تعيد العنصر الذي حُذف.
names = ["Ali", "Sara", "Omar"]
removed_name = names.pop(1)
print(removed_name)
print(names)
تكون قيمة removed_name هي "Sara"، وتصبح List هي ["Ali", "Omar"].
remove() وpop()remove(value) تحذف قيمة محددة.pop(index) تحذف العنصر الموجود عند فهرس محدد وتعيده.count()تعيد count() عدد مرات ظهور قيمة معينة في List.
numbers = [10, 20, 20, 30]
print(numbers.count(20))
الناتج هو 2.
index()تعيد index() فهرس أول ظهور للقيمة المطلوبة في الأمثلة البسيطة التي نستخدمها هنا.
names = ["Ali", "Sara", "Omar"]
print(names.index("Sara"))
الناتج هو 1.
forيمكن تطبيق حلقة for التي تعلمتها سابقًا على عناصر List.
numbers = [10, 20, 30]
for number in numbers:
print(number)
تمر الحلقة على العناصر بالترتيب، فيظهر:
10
20
30
numbers = [10, 20, 30]
for number in numbers:
if number > 15:
print(number)
الناتج هو 20 ثم 30.
inكما استخدمت in مع النصوص، يمكنك استخدامها لمعرفة هل توجد قيمة داخل List.
names = ["Ali", "Sara"]
print("Sara" in names)
print("Omar" in names)
النتيجة الأولى True والثانية False.
sorted()تعيد sorted() List جديدة تحتوي القيم بعد ترتيبها، ولا تحتاج إلى تغيير List الأصلية.
numbers = [3, 1, 2]
result = sorted(numbers)
print(numbers)
print(result)
الناتج هو:
[3, 1, 2]
[1, 2, 3]
بقيت numbers كما هي، بينما احتوت result على List جديدة مرتبة.
Tuple هي مجموعة مرتبة من القيم أيضًا، لكننا نكتبها عادة بين الأقواس ().
point = (10, 20)
names = ("Ali", "Sara", "Omar")
print(point)
print(names)
مثل List، يمكن الوصول إلى عناصر Tuple بالفهرسة والتقطيع والتكرار عليها.
عند إنشاء Tuple تحتوي عنصرًا واحدًا، تكون الفاصلة مهمة:
value = (5,)
print(value)
الصيغة (5,) تمثل Tuple بعنصر واحد.
values = (10, 20, 30)
print(values[0])
print(values[-1])
الناتج هو 10 ثم 30.
تستخدم قواعد Slicing نفسها.
values = (10, 20, 30, 40)
print(values[1:3])
الناتج هو (20, 30). الفهرس 1 مشمول، والفهرس 3 غير مشمول.
values = (10, 20, 30)
for value in values:
print(value)
تمر الحلقة على عناصر Tuple بالترتيب نفسه الذي تمر به على عناصر List.
على عكس List، لا يمكن تغيير عنصر منفرد داخل Tuple مباشرة بعد إنشائها.
إذا كانت لدينا:
values = (10, 20, 30)
فلا نستخدم values[0] = 99 لتغيير العنصر الأول.
هذا يشبه مفهوم Immutability الذي تعلمته مع Strings.
| المفهوم | List | Tuple |
|---|---|---|
| الصيغة الشائعة | [] |
() |
| مرتبة | نعم | نعم |
| تدعم الفهرسة | نعم | نعم |
| تدعم Slicing | نعم | نعم |
| يمكن تعديل العناصر مباشرة | نعم | لا |
استخدم List عندما تحتاج إلى مجموعة يمكن تعديل عناصرها أو إضافة عناصر إليها أو حذفها.
أما Tuple فمناسبة عندما تريد مجموعة مرتبة ولا تحتاج إلى تعديل عناصرها مباشرة.
0numbers = [10, 20, 30]
print(numbers[0])
العنصر الأول هو 10.
stop مشمولًا في Slicingnumbers = [10, 20, 30, 40, 50]
print(numbers[1:4])
الناتج هو [20, 30, 40] لأن الفهرس 4 غير مشمول.
append() وinsert()append() تضيف العنصر إلى نهاية List.insert() تسمح بتحديد موضع الإضافة.remove() وpop()remove() تعتمد على القيمة، بينما pop() تعتمد على الفهرس في الاستخدام الموضح هنا.
sorted() تغير List الأصليةnumbers = [3, 1, 2]
result = sorted(numbers)
print(numbers)
print(result)
تبقى List الأصلية [3, 1, 2]، بينما تكون List الجديدة [1, 2, 3].
Tuple هي Immutable، لذلك لا نعدل عنصرًا منفردًا فيها بالطريقة المستخدمة مع List.
استخدم (5,) عندما تريد Tuple تحتوي على عنصر واحد.
أنشئ List تحتوي القيم 10 و20 و30، ثم اطبع العنصر الأول والأخير.
استخدم Slicing للحصول على [20, 30, 40] من List تحتوي على الأعداد من 10 إلى 50.
أنشئ List من ثلاثة أسماء، ثم غيّر الاسم الثاني باستخدام الفهرسة.
أضف عنصرًا إلى نهاية List باستخدام append()، ثم أضف عنصرًا آخر عند الفهرس 1 باستخدام insert().
احذف قيمة باستخدام remove()، ثم احذف عنصرًا آخر باستخدام pop() واحفظ العنصر المحذوف في متغير.
استخدم حلقة for لطباعة العناصر التي تزيد على 15 من List أرقام بسيطة.
أنشئ List غير مرتبة، ثم استخدم sorted() واحفظ List المرتبة في متغير جديد. اطبع القائمتين.
أنشئ Tuple تحتوي ثلاثة أعداد، ثم اطبع العنصر الأول والأخير واستخدم Slicing للحصول على جزء منها.
[].0، ويشير -1 إلى آخر عنصر.stop غير مشمولة.len() تعيد عدد العناصر.append() تضيف عنصرًا في النهاية.insert() تضيف عنصرًا في موضع محدد.remove() تحذف قيمة محددة.pop() تحذف عنصرًا حسب الفهرس وتعيد العنصر المحذوف.count() تعد مرات ظهور قيمة.index() تعيد فهرس أول ظهور للقيمة في الأمثلة المستخدمة هنا.for للتكرار على عناصر List وTuple.in تتحقق من وجود عنصر.sorted() تعيد List جديدة مرتبة دون الحاجة إلى تغيير الأصل.().في الفصل التالي ستنتقل إلى Dictionaries وSets، وستتعلم طريقتين أخريين لتنظيم البيانات واستخدامها في Python.
نشر في ١١ أغسطس ٢٠٢٦