Python lista hozzáfűzése VS Python lista kiterjesztése - A különbség tömb módszer példákkal magyarázható

? Üdvözöllek

Ha azt szeretnénk, hogy megtanulják, hogyan kell dolgozni .append(), és .extend()és megérteni a különbségeket, akkor jön a jó helyen. Ezek hatékony listamódszerek, amelyeket mindenképpen használni fog a Python-projektjeiben.

Ebben a cikkben megtudhatja:

  • Hogyan és mikor kell használni a .append()módszert.
  • Hogyan és mikor kell használni a .extend()módszert.
  • Fő különbségeik.

Kezdjük. ✨

End Függelék

Nézzük meg, hogyan .append()működik a módszer a kulisszák mögött.

Használjon tokokat

Akkor használja ezt a módszert, ha egyetlen elemet szeretne hozzáadni a lista végéhez .

? Tippek: Bármilyen adattípusú elemeket felvehet, mivel a listák különböző adattípusú elemeket tartalmazhatnak.

Szintaxis és érvek

A .append()módszer meghívásához ezt a szintaxist kell használnia:

Balról jobbra:

  • A módosítandó lista. Ez általában egy változó, amely hivatkozik egy listára.
  • Pont, majd a módszer neve .append().
  • Zárójelben a lista végéhez hozzáadandó elem.

? Tippek: A pont nagyon fontos. Ezt "dot notation" -nek hívják. A pont alapvetően azt mondja, hogy "hívja meg ezt a módszert ebben a listában", így a módszer hatása a pont előtt található listára vonatkozik.

Példák

Íme egy példa a használatra .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]

? Tippek: Ha használja .append()az eredeti lista módosul. A módszer nem hoz létre másolatot a listáról - mutálja az eredeti listát a memóriában.

Tegyünk úgy, mintha kutatást folytatnánk, és hogy a Python segítségével összegyűjtött adatokat szeretnénk elemezni. Új mérést kell hozzáadnunk a meglévő értéklistához.

Hogyan csináljuk? A .append()módszert alkalmazzuk!

Itt láthatja:

# 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]

Egyenértékű...

Ha ismeri a karakterlánc-, lista- vagy duplaszeletelést, .append()a színfalak mögött valójában az felel meg:

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

Ezzel a példával láthatja, hogy egyenértékűek.

Használata .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]

A lista szeletelése:

>>> 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]

Szekvencia hozzáfűzése

Most mit gondol erről a példáról? Mit gondolsz, mi lesz a kimenet?

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

Kész vagy? Ez lesz a kimenet:

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

Lehet, hogy azt kérdezi, miért adták hozzá a teljes listát egyetlen elemként? Ez azért van, mert a .append()módszer hozzáadja a teljes elemet a lista végéhez. Ha az elem szekvencia, például lista, szótár vagy páros, akkor a teljes szekvencia hozzáadódik a meglévő lista egyetlen eleméhez.

Itt van egy másik példa (alább). Ebben az esetben az elem kettős, és a lista egyetlen elemeként kerül hozzáadásra, nem pedig külön tételként:

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

? Hosszabbítsa

Most merüljünk el a .extend()módszer funkcionalitásában .

Használjon tokokat

Akkor használja ezt a módszert, ha több elemet is hozzá kell rendelnie egy listához, mint egyedi elemeket .

Hadd illusztráljam ennek a módszernek a fontosságát egy ismerős barátommal, akit most tanultál meg: a .append()módszert. Annak alapján, amit megtanultam eddig, ha azt akartuk, hogy adjunk több egyedi tárgyakat egy listát .append(), akkor kellene használni .append()többször, mint ez:

# 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]

Biztos vagyok benne, hogy valószínűleg arra gondolsz, hogy ez nem lenne túl hatékony, igaz? Mi van, ha több ezer vagy millió értéket kell hozzáadnom? Nem tudok ezer vagy millió sort írni erre az egyszerű feladatra. Ez örökké tartana!

Lássunk tehát egy alternatívát. A hozzáadni kívánt értékeket külön listában tárolhatjuk, majd a for ciklus segítségével .append()annyiszor hívhatjuk meg , ahányszor szükséges:

# 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]

Ez hatékonyabb, igaz? Csak néhány sort írunk. De van egy még hatékonyabb, olvasható, és kompakt módon, hogy elérni ugyanazt a célt: .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]

Nézzük meg, hogyan működik ez a módszer a kulisszák mögött.

Szintaxis és érvek

A .extend()módszer meghívásához ezt a szintaxist kell használnia:

Balról jobbra:

  • A módosítandó lista. Ez általában egy változó, amely a listára utal.
  • Egy pont .(Eddig minden pontosan ugyanaz, mint korábban).
  • A módszer neve extend. (Most kezdnek változni a dolgok ...).
  • Zárójelben egy iterálható (lista, páros , szótár, halmaz vagy karakterlánc), amely tartalmazza azokat az elemeket, amelyeket a lista külön elemeként adunk hozzá.

? 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. ⭐️