عندما تبدأ بتعلم بايثون، ستقابل أكثر من نوع لتخزين مجموعة من البيانات، مثل:
list و tuple و set و dictionary.
في البداية قد تشعر أن هذه الأنواع متشابهة، لأن جميعها يمكن أن تخزن أكثر من قيمة داخل متغير واحد. لكن الحقيقة أن كل نوع منها له استخدام مختلف، واختيار النوع الصحيح يجعل كودك أسهل وأوضح وأفضل.
في هذا الدرس من عرب بايثون سنشرح الفرق بينها بطريقة بسيطة، مع أمثلة عملية تساعدك تعرف متى تستخدم كل نوع.
إذا كنت ما زلت في بداية تعلم بايثون، أنصحك أولًا بقراءة: أساسيات بايثون: أنواع البيانات في Python ثم العودة لهذا المقال.
لماذا توجد أكثر من طريقة لتخزين البيانات؟
تخيل أنك تبني برنامجًا بسيطًا للطلاب. قد تحتاج إلى تخزين أسماء الطلاب، درجاتهم، المواد التي يدرسونها، أو بيانات كل طالب مثل الاسم والعمر والمدينة.
في هذه الحالة، ليس من المنطقي استخدام نوع واحد لكل شيء. لذلك توفر بايثون أكثر من نوع بيانات، وكل نوع مناسب لحالة معينة.
الفكرة باختصار:
- استخدم
listعندما تريد قائمة مرتبة ويمكن تعديلها. - استخدم
tupleعندما تريد بيانات ثابتة لا تتغير. - استخدم
setعندما تريد منع التكرار. - استخدم
dictionaryعندما تريد تخزين البيانات على شكل مفتاح وقيمة.
أولًا: ما هي List في بايثون؟
القائمة list هي نوع بيانات يستخدم لتخزين مجموعة من العناصر داخل متغير واحد.
القائمة مرتبة، قابلة للتعديل، وتسمح بتكرار القيم.
مثال:
fruits = ["apple", "banana", "cherry"]
print(fruits)
القائمة تستخدم الأقواس المربعة:
[ ]
مميزات List
- مرتبة، يعني كل عنصر له مكان محدد.
- يمكنك تعديل العناصر.
- يمكنك إضافة وحذف عناصر.
- تسمح بتكرار نفس القيمة.
- يمكن الوصول إلى العناصر باستخدام
index.
مثال على الوصول إلى عنصر:
fruits = ["apple", "banana", "cherry"]
print(fruits[0])
الناتج:
apple
متى أستخدم List؟
استخدم list عندما تكون البيانات قابلة للتغيير، مثل قائمة طلاب، قائمة منتجات، قائمة مهام، أو قائمة نتائج.
ثانيًا: ما هي Tuple في بايثون؟
الـ tuple تشبه القائمة، لكنها غير قابلة للتعديل بعد إنشائها.
يعني إذا أنشأت Tuple، لا يمكنك تغيير عناصرها مباشرة.
مثال:
colors = ("red", "green", "blue")
print(colors)
الـ Tuple تستخدم الأقواس العادية:
( )
مميزات Tuple
- مرتبة.
- تسمح بتكرار القيم.
- يمكن الوصول إلى عناصرها باستخدام
index. - غير قابلة للتعديل بعد إنشائها.
مثال:
colors = ("red", "green", "blue")
print(colors[1])
الناتج:
green
متى أستخدم Tuple؟
استخدم tuple عندما تريد تخزين بيانات ثابتة لا تريد تغييرها، مثل إحداثيات نقطة، أيام الأسبوع، أو إعدادات ثابتة في البرنامج.
point = (10, 20)
print(point)
ثالثًا: ما هي Set في بايثون؟
الـ set هي مجموعة غير مرتبة، ولا تسمح بتكرار القيم.
مثال:
fruits = {"apple", "banana", "cherry"}
print(fruits)
الـ Set تستخدم الأقواس المعقوفة:
{ }
مميزات Set
- لا تسمح بتكرار القيم.
- غير مرتبة.
- لا يمكن الوصول إلى عناصرها باستخدام
index. - مفيدة جدًا للمقارنة بين المجموعات.
مثال يوضح منع التكرار:
numbers = {1, 2, 2, 3, 3}
print(numbers)
الناتج سيكون بدون تكرار.
متى أستخدم Set؟
استخدم set عندما تريد حذف التكرار أو معرفة العناصر المشتركة بين مجموعتين.
مثال عملي لحذف التكرار من قائمة:
names = ["Ali", "Omar", "Ali", "Sara"]
unique_names = set(names)
print(unique_names)
ولشرح Sets بشكل أوسع، يمكنك قراءة: شرح Sets في Python للمبتدئين.
رابعًا: ما هي Dictionary في بايثون؟
القاموس dictionary يستخدم لتخزين البيانات على شكل مفتاح وقيمة.
يعني كل معلومة يكون لها اسم يدل عليها.
مثال:
student = {
"name": "Ali",
"age": 20,
"city": "Amman"
}
print(student)
القاموس يستخدم الأقواس المعقوفة أيضًا، لكن داخله يكون على شكل:
"key": "value"
مميزات Dictionary
- يخزن البيانات على شكل مفتاح وقيمة.
- يمكن تعديل القيم.
- مفيد جدًا للبيانات المنظمة.
- كل مفتاح يجب أن يكون فريدًا.
مثال على الوصول إلى قيمة:
student = {
"name": "Ali",
"age": 20
}
print(student["name"])
الناتج:
Ali
متى أستخدم Dictionary؟
استخدم dictionary عندما تكون البيانات مرتبطة بمعنى واضح، مثل بيانات مستخدم، منتج، طالب، إعدادات، أو نتيجة API.
جدول مقارنة سريع
| النوع | الشكل | مرتب؟ | قابل للتعديل؟ | يسمح بالتكرار؟ | أفضل استخدام |
|---|---|---|---|---|---|
list |
[ ] |
نعم | نعم | نعم | قوائم قابلة للتغيير |
tuple |
( ) |
نعم | لا | نعم | بيانات ثابتة |
set |
{ } |
لا | يمكن الإضافة والحذف | لا | منع التكرار والمقارنات |
dictionary |
{key: value} |
نعم في الإصدارات الحديثة | نعم | المفاتيح لا تتكرر | بيانات مفتاح وقيمة |
مثال عملي يجمع الأنواع الأربعة
لنفرض أننا نريد تخزين بيانات طالب. يمكننا استخدام أكثر من نوع حسب الحاجة.
student_name = "Ali"
skills = ["Python", "HTML", "CSS"]
birth_date = (2005, 7, 15)
unique_courses = {"Python", "HTML", "Python"}
student = {
"name": student_name,
"skills": skills,
"birth_date": birth_date,
"courses": unique_courses
}
print(student)
في هذا المثال:
- استخدمنا نصًا لتخزين اسم الطالب.
- استخدمنا
listلتخزين المهارات لأنها قابلة للزيادة والتعديل. - استخدمنا
tupleلتخزين تاريخ الميلاد لأنه ثابت. - استخدمنا
setلحذف تكرار الدورات. - استخدمنا
dictionaryلجمع بيانات الطالب بشكل منظم.
أخطاء شائعة عند اختيار النوع المناسب
استخدام List مع بيانات لا يجب أن تتكرر
إذا كنت تريد منع التكرار، لا تجعل الحل الأول دائمًا هو list.
استخدم set عندما يكون منع التكرار مهمًا.
emails = ["a@test.com", "b@test.com", "a@test.com"]
unique_emails = set(emails)
print(unique_emails)
استخدام Set مع بيانات تحتاج ترتيبًا
إذا كان ترتيب العناصر مهمًا، مثل ترتيب الدروس أو خطوات تنفيذ مشروع، فاستخدم list بدل set.
استخدام Tuple ثم محاولة تعديلها
الـ tuple غير قابلة للتعديل، لذلك لا تستخدمها إذا كنت تعرف أنك ستضيف أو تحذف عناصر لاحقًا.
كيف أختار النوع المناسب بسرعة؟
اسأل نفسك هذه الأسئلة:
- هل أحتاج إلى ترتيب العناصر؟ إذا نعم، استخدم
listأوtuple. - هل أحتاج إلى تعديل العناصر؟ إذا نعم، استخدم
listأوdictionary. - هل أريد منع التكرار؟ إذا نعم، استخدم
set. - هل البيانات عندي على شكل اسم وقيمة؟ إذا نعم، استخدم
dictionary. - هل البيانات ثابتة ولا أريد تغييرها؟ إذا نعم، استخدم
tuple.
روابط مفيدة
يمكنك الرجوع إلى توثيق بايثون الرسمي لفهم أنواع البيانات المركبة بشكل أعمق: Python Data Structures Documentation.
وإذا كنت تريد تطبيقًا عمليًا بعد فهم هذه الأنواع، اقرأ: أفضل مشاريع بايثون للمبتدئين لتطبيق ما تعلمته.
مقالات مقترحة من عرب بايثون
- أساسيات بايثون 8: شرح القوائم Lists في Python للمبتدئين
- أساسيات بايثون 9: شرح Sets في Python للمبتدئين
- فن قراءة رسائل الخطأ في بايثون للمبتدئين
خلاصة المقال
الفرق بين list و tuple و set و dictionary ليس مجرد اختلاف في شكل الأقواس، بل اختلاف في طريقة تخزين البيانات واستخدامها.
list: مناسبة للقوائم المرتبة القابلة للتعديل.tuple: مناسبة للبيانات الثابتة.set: مناسبة لمنع التكرار والمقارنة بين المجموعات.dictionary: مناسبة لتخزين بيانات مفتاح وقيمة.
لا تحفظ هذه الأنواع نظريًا فقط. افتح محرر الأكواد، واكتب الأمثلة بنفسك، وجرّب تغيير القيم حتى تفهم الفرق عمليًا.
تمرين بسيط لك
أنشئ برنامجًا يحتوي على:
- قائمة مهارات باستخدام
list. - تاريخ ميلاد باستخدام
tuple. - مجموعة أسماء بدون تكرار باستخدام
set. - بيانات طالب باستخدام
dictionary.
ابدأ بهذا المثال وعدّل عليه:
skills = ["Python", "HTML", "CSS"]
birth_date = (2005, 7, 15)
names = {"Ali", "Omar", "Ali"}
student = {
"name": "Ali",
"skills": skills,
"birth_date": birth_date,
"names": names
}
print(student)
بهذا تكون قد استخدمت الأنواع الأربعة داخل مثال واحد، وهذا أفضل من حفظ التعريفات فقط.




