أساسيات بايثون 17: شرح Tuples في Python والفرق بينها وبين Lists

أساسيات بايثون 17 شرح Tuples في Python والفرق بينها وبين Lists للمبتدئين

بعد أن تعلمنا في الدرس السابق من سلسلة أساسيات بايثون مفهوم القوائم Lists وكيف نستخدمها لتخزين عدة عناصر داخل متغير واحد، ننتقل الآن إلى نوع قريب جدًا منها وهو Tuples في Python.

قد تبدو Tuple في البداية مثل List، لأنها أيضًا تخزن أكثر من قيمة داخل متغير واحد، ويمكنك الوصول إلى عناصرها باستخدام الفهرس index. لكن الفرق المهم أن Tuple ثابتة ولا يمكن تعديل عناصرها مباشرة بعد إنشائها، بينما القائمة List قابلة للتعديل.

في هذا الدرس من بايثون العرب سنشرح معنى Tuple في بايثون، وكيف تنشئها، وكيف تصل إلى عناصرها، وما الفرق بينها وبين List، ومتى تستخدم كل نوع بطريقة سهلة ومناسبة للمبتدئين.

{getToc} $title={محتوى المقال}

{alertInfo} فكر في Tuple كأنها قائمة ثابتة: تخزن عدة عناصر، لكن لا تريد تغييرها بعد إنشائها.

شرح فكرة Tuple في Python وكيف تخزن عدة عناصر ثابتة داخل متغير واحد

ما هي Tuple في بايثون؟

الـ Tuple هي نوع بيانات في Python يستخدم لتخزين عدة عناصر داخل متغير واحد. غالبًا تكتب عناصر Tuple بين أقواس دائرية ()، وتفصل بين العناصر باستخدام الفواصل.

مثال بسيط:

colors = ("red", "green", "blue")

print(colors)

الناتج:

('red', 'green', 'blue')

في هذا المثال، المتغير colors يحتوي على ثلاث قيم داخل Tuple واحدة. ويمكن أن تحتوي Tuple على نصوص، أرقام، قيم منطقية، أو حتى أنواع بيانات مختلفة داخل نفس المجموعة.

لماذا نستخدم Tuple في Python؟

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

أمثلة على أشياء مناسبة لاستخدام Tuple:

  • إحداثيات نقطة مثل (10, 20).
  • أبعاد صورة مثل (1200, 800).
  • ألوان ثابتة في البرنامج.
  • بيانات لا تريد تغيير ترتيبها أو قيمها.
  • إرجاع أكثر من قيمة من دالة.
  • تخزين إعدادات بسيطة وثابتة.
{alertSuccess} استخدم Tuple عندما تكون البيانات ثابتة ولا تريد تعديلها بالخطأ أثناء كتابة البرنامج.

كيف تنشئ Tuple في بايثون؟

أسهل طريقة لإنشاء Tuple هي كتابة العناصر بين أقواس دائرية:

numbers = (10, 20, 30)

print(numbers)

ويمكنك إنشاء Tuple من نصوص:

days = ("Saturday", "Sunday", "Monday")

print(days)

ويمكن أيضًا إنشاء Tuple بدون أقواس، لكن للمبتدئ الأفضل استخدام الأقواس حتى يكون الكود واضحًا:

point = 10, 20

print(point)

الناتج:

(10, 20)

إنشاء Tuple تحتوي على عنصر واحد

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

مثال خاطئ:

item = ("Python")

print(type(item))

الناتج:

<class 'str'>

هنا Python اعتبرها نصًا عاديًا وليس Tuple، لأن الأقواس وحدها لا تكفي في حالة العنصر الواحد.

الحل الصحيح:

item = ("Python",)

print(type(item))

الناتج:

<class 'tuple'>
{alertWarning} عند إنشاء Tuple من عنصر واحد، الفاصلة مهمة جدًا: اكتب ("Python",) وليس ("Python").

الوصول إلى عناصر Tuple باستخدام index

مثل القوائم تمامًا، يمكن الوصول إلى عناصر Tuple باستخدام الفهرس index. ويبدأ الفهرس في Python من الرقم 0.

colors = ("red", "green", "blue")

print(colors[0])
print(colors[1])
print(colors[2])

الناتج:

red
green
blue

لاحظ أن:

  • colors[0] تعني العنصر الأول.
  • colors[1] تعني العنصر الثاني.
  • colors[2] تعني العنصر الثالث.
مثال يوضح الوصول إلى عناصر Tuple في بايثون باستخدام الفهرس index بداية من صفر

استخدام الفهرس السالب مع Tuple

يمكنك استخدام الفهرس السالب للوصول إلى العناصر من النهاية. الرقم -1 يعني آخر عنصر، والرقم -2 يعني العنصر قبل الأخير.

colors = ("red", "green", "blue")

print(colors[-1])
print(colors[-2])

الناتج:

blue
green

هل يمكن تعديل عناصر Tuple؟

لا. هذه هي الفكرة الأساسية في Tuple. بعد إنشائها لا يمكنك تغيير عنصر داخلها مباشرة.

مثال خاطئ:

colors = ("red", "green", "blue")

colors[0] = "black"

سيظهر خطأ لأن Tuple لا تسمح بتعديل عناصرها بعد الإنشاء. إذا كنت تحتاج إلى تعديل العناصر، استخدم List بدل Tuple.

{alertInfo} الفرق الأهم: List قابلة للتعديل، أما Tuple ثابتة ولا يمكن تعديل عناصرها مباشرة.

معرفة عدد عناصر Tuple باستخدام len

يمكنك استخدام الدالة len() لمعرفة عدد عناصر Tuple.

days = ("Saturday", "Sunday", "Monday")

print(len(days))

الناتج:

3

المرور على عناصر Tuple باستخدام for loop

يمكنك المرور على عناصر Tuple باستخدام حلقة for مثل القوائم.

languages = ("Python", "JavaScript", "PHP")

for language in languages:
    print(language)

الناتج:

Python
JavaScript
PHP

تقطيع Tuple باستخدام Slicing

يمكنك أخذ جزء من Tuple باستخدام slicing، مثلما نفعل مع القوائم. هذه الطريقة مفيدة عندما تريد استخراج جزء من البيانات بدون تغيير Tuple الأصلية.

numbers = (10, 20, 30, 40, 50)

print(numbers[1:4])

الناتج:

(20, 30, 40)

هنا بدأنا من الفهرس 1 وتوقفنا قبل الفهرس 4.

الفرق بين List و Tuple في Python

الآن وصلنا لأهم جزء في الدرس: ما الفرق بين List و Tuple؟

المقارنة List Tuple
طريقة الكتابة [1, 2, 3] (1, 2, 3)
القابلية للتعديل يمكن تعديلها لا يمكن تعديلها مباشرة
الإضافة والحذف تدعم append و remove و pop لا تدعم الإضافة والحذف المباشر
الاستخدام المناسب بيانات تتغير بيانات ثابتة
الوصول بالفهرس نعم نعم
المرور باستخدام for نعم نعم
مقارنة توضح الفرق بين List و Tuple في Python من حيث التعديل والأقواس والاستخدام

مثال يوضح الفرق عمليًا

القائمة يمكن تعديلها:

names = ["Ali", "Sara", "Omar"]

names[0] = "Ahmed"

print(names)

الناتج:

['Ahmed', 'Sara', 'Omar']

أما Tuple فلا يمكن تعديلها بنفس الطريقة:

names = ("Ali", "Sara", "Omar")

names[0] = "Ahmed"

هذا سيؤدي إلى خطأ لأن Tuple ثابتة.

هل يمكن تحويل Tuple إلى List؟

نعم، إذا احتجت إلى تعديل Tuple، يمكنك تحويلها مؤقتًا إلى List، ثم تعديلها، ثم تحويلها مرة أخرى إلى Tuple.

colors = ("red", "green", "blue")

colors_list = list(colors)

colors_list[0] = "black"

colors = tuple(colors_list)

print(colors)

الناتج:

('black', 'green', 'blue')

لكن انتبه: إذا كنت تحتاج إلى التعديل كثيرًا، فالأفضل من البداية استخدام List بدل Tuple.

إرجاع أكثر من قيمة من دالة باستخدام Tuple

من الاستخدامات المهمة في بايثون أن الدالة تستطيع إرجاع أكثر من قيمة، وغالبًا يتم التعامل مع الناتج كـ Tuple.

def get_user():
    return "Ahmed", 25

user = get_user()

print(user)

الناتج:

('Ahmed', 25)

ويمكنك استقبال القيم مباشرة في متغيرين:

name, age = get_user()

print(name)
print(age)

الناتج:

Ahmed
25
{alertInfo} عندما ترجع الدالة أكثر من قيمة في بايثون، يمكنك التعامل مع الناتج كأنه Tuple.

Unpacking في Tuple

كلمة Unpacking تعني تفكيك عناصر Tuple وتخزينها في متغيرات منفصلة. هذه الطريقة تجعل الكود أوضح عندما تكون القيم معروفة ومحددة.

point = (10, 20)

x, y = point

print(x)
print(y)

الناتج:

10
20

لكن يجب أن يكون عدد المتغيرات مساويًا لعدد عناصر Tuple.

مثال خاطئ:

point = (10, 20, 30)

x, y = point

هنا يوجد 3 عناصر، لكننا وضعنا متغيرين فقط، لذلك سيظهر خطأ.

أهم دوال Tuple في بايثون

بما أن Tuple ثابتة، فهي لا تحتوي على دوال كثيرة مثل List. لكن هناك دالتان مهمتان جدًا:

الدالة وظيفتها مثال
count() تحسب كم مرة تكررت قيمة معينة items.count("Python")
index() تعطيك فهرس أول ظهور لقيمة معينة items.index("Python")

مثال على count

numbers = (1, 2, 2, 3, 2)

print(numbers.count(2))

الناتج:

3

مثال على index

languages = ("HTML", "Python", "CSS")

print(languages.index("Python"))

الناتج:

1

متى أستخدم Tuple بدل List؟

استخدم Tuple عندما تكون البيانات ثابتة أو تريد حماية القيم من التعديل غير المقصود.

أمثلة مناسبة:

  • إحداثيات نقطة: (x, y)
  • مقاسات ثابتة: (width, height)
  • ألوان ثابتة: ("red", "green", "blue")
  • إرجاع أكثر من قيمة من دالة.
  • بيانات مرجعية لا تريد تغييرها أثناء تنفيذ البرنامج.

واستخدم List عندما تريد إضافة أو حذف أو تعديل العناصر باستمرار.

ملخص استخدامات Tuples في بايثون ومتى تستخدم Tuple بدل List للمبتدئين

أخطاء شائعة عند استخدام Tuple

1. محاولة تعديل عنصر داخل Tuple

هذا من أشهر الأخطاء:

items = ("A", "B", "C")

items[0] = "X"

الحل: استخدم List إذا كنت تريد تعديل العناصر.

2. نسيان الفاصلة في Tuple من عنصر واحد

اكتب:

item = ("Python",)

ولا تكتب:

item = ("Python")

3. الخلط بين الأقواس المربعة والدائرية

القائمة تستخدم أقواسًا مربعة:

my_list = [1, 2, 3]

أما Tuple فتستخدم غالبًا أقواسًا دائرية:

my_tuple = (1, 2, 3)

مثال تطبيقي بسيط

لنفترض أن لدينا موقعًا ونريد تخزين أبعاد صورة ثابتة:

image_size = (1200, 800)

width, height = image_size

print("العرض:", width)
print("الارتفاع:", height)

الناتج:

العرض: 1200
الارتفاع: 800

هنا استخدام Tuple مناسب لأن أبعاد الصورة غالبًا بيانات ثابتة نريد قراءتها فقط، وليس تعديلها في كل مرة.

أسئلة شائعة

ما معنى Tuple في بايثون؟

Tuple هي نوع بيانات يستخدم لتخزين عدة عناصر داخل متغير واحد، وغالبًا تكتب باستخدام الأقواس الدائرية ().

ما الفرق بين Tuple و List؟

الفرق الأساسي أن List قابلة للتعديل، بينما Tuple ثابتة ولا يمكن تعديل عناصرها مباشرة بعد إنشائها.

هل يمكن الوصول إلى عناصر Tuple باستخدام index؟

نعم، يمكنك الوصول إلى عناصر Tuple باستخدام الفهرس مثل items[0]، ويبدأ الفهرس في Python من صفر.

هل يمكن تحويل Tuple إلى List؟

نعم، يمكنك استخدام list() لتحويل Tuple إلى List، ثم استخدام tuple() لإعادتها إلى Tuple بعد التعديل.

متى أستخدم Tuple؟

استخدم Tuple عندما تكون البيانات ثابتة ولا تريد تعديلها، مثل الإحداثيات، الأبعاد، أو القيم التي ترجع من دالة.

روابط مهمة من بايثون العرب

مصدر خارجي مفيد

الخلاصة

تعلمنا في هذا الدرس أن Tuple في بايثون تشبه القائمة List من حيث أنها تخزن عدة عناصر داخل متغير واحد، ويمكن الوصول إلى عناصرها باستخدام الفهرس والمرور عليها باستخدام for loop.

لكن الفرق الأساسي أن List قابلة للتعديل، بينما Tuple ثابتة ولا يمكن تعديل عناصرها مباشرة. لذلك استخدم List عندما تحتاج إلى إضافة أو حذف أو تعديل العناصر، واستخدم Tuple عندما تكون البيانات ثابتة وتريد الحفاظ عليها من التغيير.

{alertSuccess} القاعدة الذهبية: إذا كانت البيانات ستتغير استخدم List، وإذا كانت ثابتة استخدم Tuple.

إرسال تعليق

أحدث أقدم