Lista Python Anexar VS Lista Python Estender – A Diferença Explicada com Exemplos de Métodos Array


👋 Bem-vindo

Se você quiser aprender a trabalhar com .append() e .extend() e entender suas diferenças, então você veio ao lugar certo. Eles são métodos de lista poderosos que você definitivamente usará em seus projetos Python.

Neste artigo, você aprenderá:

  • Como e quando usar o .append() método.
  • Como e quando usar o .extend() método.
  • Suas principais diferenças.

Vamos começar

🔸 Anexar

Vamos ver como o .append() O método funciona nos bastidores.

Casos de Uso

Você deve usar esse método quando quiser adicione um único item ao final de uma lista.

💡 Dicas: Você pode adicionar itens de qualquer tipo de dados, pois as listas podem ter elementos de diferentes tipos de dados.

Sintaxe e argumentos

Para ligar para o .append() método, você precisará usar esta sintaxe:

Da esquerda para a direita:

  • A lista que será modificada. Geralmente é uma variável que faz referência a uma lista.
  • Um ponto, seguido pelo nome do método .append().
  • Entre parênteses, o item que será adicionado ao final da lista.

💡 Dicas: O ponto é muito importante. Isso é chamado de “notação de ponto”. O ponto basicamente diz: “chame esse método nesta lista específica”, para que o efeito do método seja aplicado à lista localizada antes do ponto.

Exemplos

Aqui temos um exemplo do uso de .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]

💡 Dicas: Quando você usa .append() a lista original é modificada. O método não cria uma cópia da lista, muda a lista original na memória.

Vamos fingir que estamos realizando uma pesquisa e que queremos analisar os dados coletados usando Python. Precisamos adicionar uma nova medida à lista de valores existente.

Como fazemos isso? Nós usamos o .append() método!

Você pode vê-lo aqui:

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

Equivalente a…

Se você estiver familiarizado com fatias de cadeia, lista ou tupla, o que .append() realmente faz nos bastidores é equivalente a:

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

Com este exemplo, você pode ver que eles são equivalentes.

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

Usando o fatiamento da lista:

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

Anexando uma sequência

Agora, o que você acha desse exemplo? O que você acha que será produzido?

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

Você está pronto? Esta será a saída:

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

Você pode estar se perguntando: por que a lista completa foi adicionada como um único item? É porque o .append() O método adiciona o item inteiro ao final da lista. Se o item for uma sequência como uma lista, dicionário ou tupla, a sequência inteira será adicionada como um único item da lista existente.

Aqui temos outro exemplo (abaixo). Nesse caso, o item é uma tupla e é adicionado como um único item da lista, não como itens individuais:

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

🔸 Estender

Agora vamos mergulhar na funcionalidade do .extend() método.

Casos de Uso

Você deve usar esse método se precisar anexar vários itens a uma lista como itens individuais.

Deixe-me ilustrar a importância desse método com um amigo conhecido que você acabou de aprender: o .append() método. Com base no que você aprendeu até agora, se quisermos adicionar vários Individual itens para uma lista usando .append(), precisaríamos usar .append() várias vezes, assim:

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

Tenho certeza de que você provavelmente está pensando que isso não seria muito eficiente, certo? E se eu precisar adicionar milhares ou milhões de valores? Não posso escrever milhares ou milhões de linhas para esta tarefa simples, que levaria uma eternidade!

Então, vamos ver uma alternativa. Podemos armazenar os valores que queremos adicionar em uma lista separada e, em seguida, usar um loop for para chamar .append() quantas vezes for necessário:

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

Isso é mais eficiente, certo? Estamos escrevendo apenas algumas linhas. Mas há uma maneira ainda mais eficiente, legível e compacta de atingir o mesmo objetivo: .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]

Vamos ver como esse método funciona nos bastidores.

Sintaxe e argumentos

Para ligar para o .extend() método, você precisará usar esta sintaxe:

Da esquerda para a direita:

  • A lista que será modificada. Geralmente é uma variável que se refere à lista.
  • Um ponto . (Até agora, tudo é exatamente o mesmo de antes).
  • O nome do método extend. (Agora as coisas começam a mudar …).
  • Entre parênteses, um iterável (lista, tupla, dicionário, conjunto ou sequência de caracteres) que contém os itens que serão adicionados como elementos individuais da lista.

💡 Dicas: De acordo com Documentação Python, iterável é definido como “um objeto capaz de retornar seus membros um de cada vez”. Os iteráveis ​​podem ser usados ​​em um loop for e, como eles retornam seus elementos um de cada vez, podemos “fazer algo” com cada um deles, um por iteração.

Por trás das cenas

Vamos ver como .extend() trabalha nos bastidores. Aqui temos um exemplo:

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

Você pode pensar em .extend() como um método que acrescenta os elementos individuais do iterável na mesma ordem em que aparecem.

Nesse caso, temos uma lista a = [1, 2, 3, 4] conforme ilustrado no diagrama abaixo. Nós também temos uma lista b = [5, 6, 7] que contém a sequência de valores que queremos adicionar. O método pega cada elemento de b e anexa à lista a na mesma ordem.

Etapa 1. O primeiro elemento é anexado.

Etapa 2. Segundo elemento anexado.

Etapa 3. Terceiro elemento anexado

Após a conclusão desse processo, temos a lista atualizada a e podemos trabalhar com os valores como elementos individuais de a.

💡 Dicas: A lista b usado para estender a lista a permanece intacto após esse processo. Você pode trabalhar com ele após a chamada para .extend(). Aqui está a prova:

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

Exemplos

Você pode estar curioso para saber como o .extend() O método funciona quando você passa diferentes tipos de iterables. Vamos ver como nos seguintes exemplos:

Para tuplas:
O processo funciona exatamente da mesma maneira se você passar uma tupla. Os elementos individuais da tupla são anexados um a um na ordem em que aparecem.

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

Para conjuntos:
O mesmo ocorre se você passar em um conjunto. Os elementos do conjunto são anexados um a um.

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

Para strings:
Strings funcionam um pouco diferente com o .extend() método. Cada caractere da string é considerado um “item”, portanto, os caracteres são anexados um a um na ordem em que aparecem na 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', '!']

Para dicionários:
Os dicionários têm um comportamento específico quando você os passa como argumentos para .extend(). Nesse caso, o chaves do dicionário são anexados um a um. Os valores dos pares de valores-chave correspondentes não são anexados.

Neste exemplo (abaixo), as teclas são “d”, “e” e “f”. Esses valores são anexados à lista 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']

Equivalente a…

o que .extend() faz é equivalente a a[len(a):] = iterable. Aqui temos um exemplo para ilustrar que eles são equivalentes:

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

Usando o fatiamento da lista:

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

O resultado é o mesmo, mas usando .extend() é muito mais legível e compacto, certo? O Python realmente oferece ferramentas incríveis para melhorar nosso fluxo de trabalho.

Of Resumo de suas diferenças

Agora que você sabe trabalhar com .append() e .extend(), vamos ver um resumo das principais diferenças:

  • Efeito: .append() adiciona um único elemento ao final da lista enquanto .extend() pode adicionar vários elementos individuais ao final da lista.
  • Argumento: .append() leva um único elemento como argumento enquanto .extend() usa iterável como argumento (lista, tupla, dicionários, conjuntos, seqüências de caracteres).

Eu realmente espero que você tenha gostado do meu artigo e que tenha sido útil. Agora você pode trabalhar com .append() e .extend() nos seus projetos Python. Confira meus cursos on-line. Siga-me no Twitter. 👍





Fonte

Leave a Reply

Your email address will not be published. Required fields are marked *