الفرق بين append و extend في Python: متى تستخدم كل واحدة؟

شرح الفرق بين append و extend في Python للمبتدئين

عند تعلم القوائم Lists في Python ستقابل كثيرًا الدالتين append() و extend(). وفي البداية قد تبدوان متشابهتين، لأن الاثنين تُستخدمان لإضافة عناصر إلى القائمة.

لكن الحقيقة أن بينهما فرقًا مهمًا جدًا: append تضيف عنصرًا واحدًا كما هو، بينما extend تضيف عناصر كائن قابل للتكرار واحدًا واحدًا.

في هذا الدرس من بايثون العرب سنشرح الفرق بين append و extend بطريقة مبسطة، مع أمثلة عملية تساعدك على فهم متى تستخدم كل واحدة.

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

{alertInfo} هذا الدرس مهم جدًا لكل مبتدئ يريد تعلم بايثون بالعربي، لأن الخلط بين append و extend من أكثر الأخطاء الشائعة عند التعامل مع Lists.

python-list-append-vs-extend-concept

ما هي List في Python؟

القائمة List في Python هي نوع بيانات يسمح لك بتخزين أكثر من قيمة داخل متغير واحد.

مثال:

fruits = ["apple", "banana", "cherry"]

print(fruits)

الناتج:

['apple', 'banana', 'cherry']

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

ما وظيفة append في Python؟

الدالة append() تستخدم لإضافة عنصر واحد إلى نهاية القائمة.

مثال بسيط:

fruits = ["apple", "banana"]

fruits.append("cherry")

print(fruits)

الناتج:

['apple', 'banana', 'cherry']

لاحظ أن cherry أُضيفت كعنصر جديد في نهاية القائمة.

{alertSuccess} استخدم append عندما تريد إضافة عنصر واحد فقط إلى نهاية القائمة.

شرح أن append تضيف العنصر كاملًا في نهاية List حتى لو كان العنصر قائمة في Python

ماذا يحدث إذا استخدمنا append مع قائمة؟

هنا تبدأ النقطة المهمة. إذا استخدمت append() لإضافة قائمة داخل قائمة أخرى، فإن Python سيضيف القائمة الثانية كعنصر واحد كامل.

numbers = [1, 2, 3]

numbers.append([4, 5])

print(numbers)

الناتج:

[1, 2, 3, [4, 5]]

لاحظ أن [4, 5] لم تُدمج مع القائمة الأصلية، بل أُضيفت كقائمة داخل القائمة.

يعني أصبح لدينا قائمة بداخل قائمة، وهذا قد يكون صحيحًا أحيانًا، لكنه ليس المطلوب دائمًا.

{alertWarning} إذا استخدمت append مع List، سيتم إدخال القائمة كاملة كعنصر واحد، وليس دمج عناصرها.

ما وظيفة extend في Python؟

الدالة extend() تستخدم لإضافة عناصر كائن قابل للتكرار إلى القائمة عنصرًا عنصرًا.

بمعنى أبسط: إذا أعطيتها قائمة ثانية، فإنها تدمج عناصر القائمة الثانية داخل القائمة الأولى.

numbers = [1, 2, 3]

numbers.extend([4, 5])

print(numbers)

الناتج:

[1, 2, 3, 4, 5]

هنا تم دمج 4 و 5 داخل القائمة الأصلية، ولم يتم إدخال القائمة الثانية كعنصر منفصل.

شرح أن extend تفرد عناصر القائمة الثانية وتضيفها داخل القائمة الأولى في Python

الفرق بين append و extend باختصار

الدالة ماذا تفعل؟ متى أستخدمها؟
append() تضيف عنصرًا واحدًا كما هو في نهاية القائمة عندما تريد إضافة قيمة واحدة أو عنصر واحد
extend() تضيف عناصر iterable واحدًا واحدًا إلى القائمة عندما تريد دمج قائمة أو مجموعة عناصر داخل قائمة

مثال يوضح الفرق بوضوح

لنقارن بين الطريقتين في مثال واحد:

list_one = [1, 2, 3]
list_two = [1, 2, 3]

list_one.append([4, 5])
list_two.extend([4, 5])

print("append:", list_one)
print("extend:", list_two)

الناتج:

append: [1, 2, 3, [4, 5]]
extend: [1, 2, 3, 4, 5]

هنا الفرق واضح:

  • append أضافت [4, 5] كعنصر واحد.
  • extend أضافت 4 و 5 كعنصرين منفصلين.

هل يمكن استخدام extend مع النصوص؟

نعم، لكن انتبه. النص في Python يعتبر كائنًا قابلًا للتكرار، لذلك extend ستضيف كل حرف كعنصر منفصل.

letters = ["A", "B"]

letters.extend("CD")

print(letters)

الناتج:

['A', 'B', 'C', 'D']

لأن النص "CD" يتكون من حرفين، أضافت extend كل حرف وحده.

{alertWarning} استخدام extend مع النصوص قد يعطيك نتيجة غير متوقعة إذا كنت تريد إضافة النص كاملًا كعنصر واحد.

ماذا لو استخدمنا append مع نص؟

إذا استخدمنا append مع نص، سيتم إضافة النص كاملًا كعنصر واحد.

letters = ["A", "B"]

letters.append("CD")

print(letters)

الناتج:

['A', 'B', 'CD']

هنا أضافت append النص "CD" كعنصر واحد، وهذا يوضح الفرق أكثر.

هل append و extend تغيران القائمة الأصلية؟

نعم، كل من append و extend تعدلان القائمة الأصلية نفسها، ولا تُرجعان قائمة جديدة.

مثال:

numbers = [1, 2]

result = numbers.append(3)

print(numbers)
print(result)

الناتج:

[1, 2, 3]
None

لاحظ أن append عدلت القائمة، لكنها أرجعت None.

{alertError} لا تكتب numbers = numbers.append(3)، لأن append ترجع None وليس القائمة الجديدة.

خطأ شائع جدًا مع append

من أكثر الأخطاء التي يقع فيها المبتدئون:

numbers = [1, 2]

numbers = numbers.append(3)

print(numbers)

الناتج:

None

السبب أن append لا تُرجع القائمة، بل تعدلها مباشرة.

الكود الصحيح:

numbers = [1, 2]

numbers.append(3)

print(numbers)

الناتج:

[1, 2, 3]

متى أستخدم append؟

استخدم append عندما تريد إضافة عنصر واحد فقط.

مثل:

  • إضافة اسم طالب إلى قائمة الطلاب.
  • إضافة رقم واحد إلى قائمة الأرقام.
  • إضافة قاموس واحد داخل قائمة.
  • إضافة قائمة داخل قائمة إذا كنت تريد Nested List.
students = ["Ahmed", "Sara"]

students.append("Omar")

print(students)

متى أستخدم extend؟

استخدم extend عندما تريد دمج عناصر متعددة داخل القائمة.

مثل:

  • دمج قائمتين من الأسماء.
  • إضافة مجموعة أرقام دفعة واحدة.
  • إضافة عناصر Tuple إلى List.
  • دمج نتائج قادمة من أكثر من مصدر.
students = ["Ahmed", "Sara"]
new_students = ["Omar", "Lina"]

students.extend(new_students)

print(students)

الناتج:

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

هل يمكن استخدام علامة + بدل extend؟

نعم، يمكن دمج قائمتين باستخدام علامة +، لكن هناك فرق بسيط.

list1 = [1, 2]
list2 = [3, 4]

result = list1 + list2

print(result)

الناتج:

[1, 2, 3, 4]

هنا تم إنشاء قائمة جديدة داخل result، بينما extend تعدل القائمة الأصلية مباشرة.

جدول مقارنة سريع

السؤال append extend
هل تضيف عنصرًا واحدًا؟ نعم لا، تضيف عدة عناصر من iterable
ماذا يحدث عند تمرير List؟ تضيف القائمة كاملة كعنصر واحد تضيف عناصر القائمة واحدًا واحدًا
هل تغير القائمة الأصلية؟ نعم نعم
هل ترجع قائمة جديدة؟ لا، ترجع None لا، ترجع None
مقارنة بين append و extend في Python توضح متى تضيف عنصرًا واحدًا ومتى تدمج عناصر قائمة

تمرين بسيط

ما الناتج المتوقع من الكود التالي؟

items = ["A", "B"]

items.append(["C", "D"])

print(items)

الإجابة:

['A', 'B', ['C', 'D']]

لأن append أضافت القائمة كاملة كعنصر واحد.

ولو استخدمنا extend بدلًا منها:

items = ["A", "B"]

items.extend(["C", "D"])

print(items)

الناتج:

['A', 'B', 'C', 'D']

أسئلة شائعة

ما الفرق بين append و extend في Python؟

append تضيف عنصرًا واحدًا كما هو، أما extend فتضيف عناصر iterable واحدًا واحدًا إلى القائمة.

متى أستخدم append؟

استخدمها عندما تريد إضافة عنصر واحد إلى نهاية القائمة، مثل رقم أو نص أو قاموس أو حتى قائمة كعنصر مستقل.

متى أستخدم extend؟

استخدمها عندما تريد دمج عناصر قائمة أو Tuple أو أي iterable داخل القائمة الأصلية.

هل append ترجع القائمة بعد الإضافة؟

لا، append تعدل القائمة الأصلية وترجع None.

هل extend ترجع قائمة جديدة؟

لا، extend تعدل القائمة الأصلية أيضًا وترجع None.

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

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

يمكنك الرجوع إلى توثيق Python الرسمي الخاص بالقوائم من هنا: Python Documentation - Data Structures.

الخلاصة

تعلمنا في هذا الدرس الفرق بين append و extend في Python، وعرفنا أن:

  • append تضيف عنصرًا واحدًا كما هو.
  • extend تضيف عناصر iterable عنصرًا عنصرًا.
  • الدالتان تعدلان القائمة الأصلية.
  • الدالتان لا ترجِعان قائمة جديدة، بل ترجِعان None.

إذا أردت إضافة عنصر واحد، استخدم append. وإذا أردت دمج عدة عناصر داخل القائمة، استخدم extend.

{alertSuccess} قاعدة بسيطة: append تضيف الشيء كما هو، أما extend فتفتح الشيء وتضيف عناصره واحدًا واحدًا.

إرسال تعليق

أحدث أقدم