قائمة Python إلحاق VS Python قائمة - الفرق الموضح بأمثلة طريقة Array

? مرحبًا

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

في هذه المقالة سوف تتعلم:

  • كيف ومتى تستخدم .append()الطريقة.
  • كيف ومتى تستخدم .extend()الطريقة.
  • اختلافاتهم الرئيسية.

هيا نبدأ. ✨

? إلحاق

دعونا نرى كيف .append()تعمل الطريقة خلف الكواليس.

استخدم حالات

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

? تلميحات: يمكنك إضافة عناصر من أي نوع بيانات حيث يمكن أن تحتوي القوائم على عناصر من أنواع بيانات مختلفة.

النحو والحجج

لاستدعاء .append()الطريقة ، ستحتاج إلى استخدام بناء الجملة التالي:

من اليسار الى اليمين:

  • القائمة التي سيتم تعديلها. عادة ما يكون هذا متغيرًا يشير إلى قائمة.
  • نقطة ، متبوعة باسم الطريقة .append().
  • بين قوسين ، العنصر الذي سيتم إضافته إلى نهاية القائمة.

? نصائح: النقطة مهمة جدًا. وهذا ما يسمى "تدوين النقطة". تقول النقطة أساسًا "استدعاء هذه الطريقة في هذه القائمة المعينة" ، لذلك سيتم تطبيق تأثير الطريقة على القائمة الموجودة قبل النقطة.

أمثلة

فيما يلي مثال على كيفية الاستخدام .append():

# Define the list >>> nums = [1, 2, 3, 4] # Add the integer 5 to the end of the existing list >>> nums.append(5) # See the updated value of the list >>> nums [1, 2, 3, 4, 5]

? نصائح: عند استخدام .append()القائمة الأصلية والمعدلة. لا تقوم الطريقة بإنشاء نسخة من القائمة - إنها تحور القائمة الأصلية في الذاكرة.

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

كيف لنا أن نفعل ذلك؟ نحن نستخدم .append()الطريقة!

يمكنك رؤيته هنا:

# Existing list >>> nums = [5.6, 7.44, 6.75, 4.56, 2.3] # Add the float (decimal number) to the end of the existing list >>> nums.append(7.34) # See the updated value of the list >>> nums [5.6, 7.44, 6.75, 4.56, 2.3, 7.34]

أي ما يعادل...

إذا كنت معتادًا على تقطيع الخيوط أو القوائم أو المجموعات ، فإن ما يفعله .append()حقًا وراء الكواليس يعادل:

a[len(a):] = [x]

باستخدام هذا المثال ، يمكنك أن ترى أنهما متكافئان.

باستخدام .append():

>>> nums = [5.6, 7.44, 6.75, 4.56, 2.3] >>> nums.append(4.52) >>> nums [5.6, 7.44, 6.75, 4.56, 2.3, 4.52]

استخدام تشريح القائمة:

>>> nums = [5.6, 7.44, 6.75, 4.56, 2.3] >>> nums[len(nums):] = [4.52] >>> nums [5.6, 7.44, 6.75, 4.56, 2.3, 4.52]

إلحاق تسلسل

الآن ، ما رأيك في هذا المثال؟ ما رأيك سيكون الناتج؟

>>> nums = [5.6, 7.44, 6.75, 4.56, 2.3] >>> nums.append([5.67, 7.67, 3.44]) >>> nums # OUTPUT?

هل أنت جاهز؟ سيكون هذا هو الناتج:

[5.6, 7.44, 6.75, 4.56, 2.3, [5.67, 7.67, 3.44]]

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

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

>>> names = ["Lulu", "Nora", "Gino", "Bryan"] >>> names.append(("Emily", "John")) >>> names ['Lulu', 'Nora', 'Gino', 'Bryan', ('Emily', 'John')]

? تمديد

الآن دعنا نتعمق في وظيفة هذه .extend()الطريقة.

استخدم حالات

يجب عليك استخدام هذه الطريقة إذا كنت بحاجة إلى إلحاق عدة عناصر بقائمة كعناصر فردية .

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

# List that we want to modify >>> nums = [5.6, 7.44, 6.75, 4.56, 2.3] # Appending the items >>> nums.append(2.3) >>> nums.append(9.6) >>> nums.append(4.564) >>> nums.append(7.56) # Updated list >>> nums [5.6, 7.44, 6.75, 4.56, 2.3, 2.3, 9.6, 4.564, 7.56]

أنا متأكد من أنك ربما تعتقد أن هذا لن يكون فعالاً للغاية ، أليس كذلك؟ ماذا لو احتجت إلى إضافة آلاف أو ملايين القيم؟ لا أستطيع كتابة آلاف أو ملايين السطور لهذه المهمة البسيطة. سيستغرق ذلك إلى الأبد!

لذلك دعونا نرى بديلاً. يمكننا تخزين القيم التي نريد إضافتها في قائمة منفصلة ثم استخدام حلقة for للاتصال .append()عدة مرات حسب الحاجة:

# List that we want to modify >>> nums = [5.6, 7.44, 6.75, 4.56, 2.3] # Values that we want to add >>> new_values = [2.3, 9.6, 4.564, 7.56] # For loop that is going to append the value >>> for num in new_values: nums.append(num) # Updated value of the list >>> nums [5.6, 7.44, 6.75, 4.56, 2.3, 2.3, 9.6, 4.564, 7.56]

This is more efficient, right? We are only writing a few lines. But there is an even more efficient, readable, and compact way to achieve the same purpose: .extend()!

>>> nums = [5.6, 7.44, 6.75, 4.56, 2.3] >>> new_values = [2.3, 9.6, 4.564, 7.56] # This is where the magic occurs! No more for loops >>> nums.extend(new_values) # The list was updated with individual values >>> nums [5.6, 7.44, 6.75, 4.56, 2.3, 2.3, 9.6, 4.564, 7.56]

Let's see how this method works behind the scenes.

Syntax and Arguments

To call the .extend() method, you will need to use this syntax:

From Left to Right:

  • The list that will be modified. This is usually a variable that refers to the list.
  • A dot . (So far, everything is exactly the same as before).
  • The name of the method extend. (Now things start to change...).
  • Within parentheses, an iterable (list, tuple, dictionary, set, or string) that contains the items that will be added as individual elements of the list.

? Tips: According to the Python documentation, an iterable is defined as "an object capable of returning its members one at a time". Iterables can be used in a for loop and because they return their elements one at a time, we can "do something" with each one of them, one per iteration.

Behind the Scenes

Let's see how .extend() works behind the scenes. Here we have an example:

# List that will be modified >>> a = [1, 2, 3, 4] # Sequence of values that we want to add to the list a >>> b = [5, 6, 7] # Calling .extend() >>> a.extend(b) # See the updated list. Now the list a has the values 5, 6, and 7 >>> a [1, 2, 3, 4, 5, 6, 7]

You can think of .extend() as a method that appends the individual elements of the iterable in the same order as they appear.

In this case, we have a list a = [1, 2, 3, 4] as illustrated in the diagram below. We also have a list b = [5, 6, 7] that contains the sequence of values that we want to add. The method takes each element of b and appends it to list a in the same order.

After this process is completed, we have the updated list a and we can work with the values as individual elements of a.

? Tips: The list b used to extend list a remains intact after this process. You can work with it after the call to .extend(). Here is the proof:

>>> a = [1, 2, 3, 4] >>> b = [5, 6, 7] >>> a.extend(b) >>> a [1, 2, 3, 4, 5, 6, 7] # List b is intact! >>> b [5, 6, 7]

Examples

You may be curious to know how the .extend() method works when you pass different types of iterables. Let's see how in the following examples:

For tuples:

The process works exactly the same if you pass a tuple. The individual elements of the tuple are appended one by one in the order that they appear.

# List that will be extended >>> a = [1, 2, 3, 4] # Values that will be added (the iterable is a tuple!) >>> b = (1, 2, 3, 4) # Method call >>> a.extend(b) # The value of the list a was updated >>> a [1, 2, 3, 4, 1, 2, 3, 4]

For sets:

The same occurs if you pass a set. The elements of the set are appended one by one.

# List that will be extended >>> a = [1, 2, 3, 4] # Values that will be appended (the iterable is a set!) >>> c = {5, 6, 7} # Method call >>> a.extend(c) # The value of a was updated >>> a [1, 2, 3, 4, 5, 6, 7]

For strings:

Strings work a little bit different with the .extend() method. Each character of the string is considered an "item", so the characters are appended one by one in the order that they appear in the string.

# List that will be extended >>> a = ["a", "b", "c"] # String that will be used to extend the list >>> b = "Hello, World!" # Method call >>> a.extend(b) # The value of a was updated >>> a ['a', 'b', 'c', 'H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '!']

For dictionaries:

Dictionaries have a particular behavior when you pass them as arguments to .extend(). In this case, the keys of the dictionary are appended one by one. The values of the corresponding key-value pairs are not appended.

In this example (below), the keys are "d", "e", and "f". These values are appended to the list a.

# List that will be extended >>> a = ["a", "b", "c"] # Dictionary that will be used to extend the list >>> b = {"d": 5, "e": 6, "f": 7} # Method call >>> a.extend(b) # The value of a was updated >>> a ['a', 'b', 'c', 'd', 'e', 'f']

Equivalent to...

What .extend() does is equivalent to a[len(a):] = iterable. Here we have an example to illustrate that they are equivalent:

Using .extend():

# List that will be extended >>> a = [1, 2, 3, 4] # Values that will be appended >>> b = (6, 7, 8) # Method call >>> a.extend(b) # The list was updated >>> a [1, 2, 3, 4, 6, 7, 8] 

Using list slicing:

# List that will be extended >>> a = [1, 2, 3, 4] # Values that will be appended >>> b = (6, 7, 8) # Assignment statement. Assign the iterable b as the final portion of the list a >>> a[len(a):] = b # The value of a was updated >>> a [1, 2, 3, 4, 6, 7, 8]

The result is the same, but using .extend() is much more readable and compact, right? Python truly offers amazing tools to improve our workflow.

? Summary of their Differences

Now that you know how to work with .append() and .extend(), let's see a summary of their key differences:

  • Effect: .append() adds a single element to the end of the list while .extend() can add multiple individual elements to the end of the list.
  • Argument: .append() takes a single element as argument while .extend() takes an iterable as argument (list, tuple, dictionaries, sets, strings).

I really hope that you liked my article and found it helpful. Now you can work with .append() and .extend() in your Python projects. Check out my online courses. Follow me on Twitter. ⭐️