Acrescentar elementos a uma lista (matriz) em Python: anexar(), alargar(), inserir()

O negócio

Para adicionar um elemento a uma lista (array) de tipo lista em Python, ou para combinar outra lista, usar os métodos de lista anex(), extend(), e insert(). Também se pode usar o operador + ou fatia para especificar uma posição e atribuí-la.

A seguinte informação é fornecida aqui.

  • Acrescentar elementos no final:append()
  • Fusão de outra lista ou tuple no final (concatenação): extend(),+operador
  • Acrescentar (inserir) um elemento na posição especificada.:insert()
  • Acrescentar (inserir) outra lista ou tuple na posição especificada:fatia

Acrescentar elementos no final: append()

Usando o método append() da lista, pode adicionar elementos ao fim (último). Se desejar adicioná-lo a uma posição diferente do fim, tal como o topo, utilize insert() como descrito abaixo.

l = list(range(3))
print(l)
# [0, 1, 2]

l.append(100)
print(l)
# [0, 1, 2, 100]

l.append('new')
print(l)
# [0, 1, 2, 100, 'new']

As listas são também acrescentadas como um único elemento. Elas não são combinadas.

l.append([3, 4, 5])
print(l)
# [0, 1, 2, 100, 'new', [3, 4, 5]]

Fusão de outra lista ou tuple no final (concatenação): extend(), +operador

Com o método de lista alargada(), pode combinar outra lista ou tuple no fim (o fim). Todos os elementos serão anexados ao fim da lista original.

l = list(range(3))
print(l)
# [0, 1, 2]

l.extend([100, 101, 102])
print(l)
# [0, 1, 2, 100, 101, 102]

l.extend((-1, -2, -3))
print(l)
# [0, 1, 2, 100, 101, 102, -1, -2, -3]

Note-se que cada carácter (elemento) é adicionado à cadeia um carácter de cada vez.

l.extend('new')
print(l)
# [0, 1, 2, 100, 101, 102, -1, -2, -3, 'n', 'e', 'w']

Também é possível concatenar utilizando o método + operador em vez do método extend().

+ operador, uma nova lista é devolvida.+=Isto também lhe permitirá adicioná-la a uma lista existente.

l2 = l + [5, 6, 7]
print(l2)
# [0, 1, 2, 100, 101, 102, -1, -2, -3, 'n', 'e', 'w', 5, 6, 7]

l += [5, 6, 7]
print(l)
# [0, 1, 2, 100, 101, 102, -1, -2, -3, 'n', 'e', 'w', 5, 6, 7]

Acrescentar (inserir) um elemento na posição especificada.: insert()

O método de lista inserir() pode adicionar (inserir) um elemento numa posição especificada.

O primeiro argumento especifica a posição, e o segundo argumento especifica o elemento a ser inserido. A primeira posição (inicial) é 0; para valores negativos, -1 é a última posição (final).

l = list(range(3))
print(l)
# [0, 1, 2]

l.insert(0, 100)
print(l)
# [100, 0, 1, 2]

l.insert(-1, 200)
print(l)
# [100, 0, 1, 200, 2]

Tal como no Apêndice(), a lista é acrescentada como um único elemento. Não será fundida.

l.insert(0, [-1, -2, -3])
print(l)
# [[-1, -2, -3], 100, 0, 1, 200, 2]

Note-se que a insert() não é uma operação eficiente porque requer os seguintes custos. Ver a seguinte página no wiki oficial para a complexidade computacional das várias operações da lista.
O(n)

O(1)
O tipo deque é fornecido no módulo de colecções padrão da biblioteca como um tipo para adicionar elementos ao topo a este custo. Por exemplo, se quiser tratar os dados como uma fila (FIFO), é mais eficiente utilizar o deque.

Acrescentar (inserir) outra lista ou tuple na posição especificada: fatia

Se especificar um intervalo com uma fatia e atribuir outra lista ou tuple, todos os elementos serão acrescentados (inseridos).

l = list(range(3))
print(l)
# [0, 1, 2]

l[1:1] = [100, 200, 300]
print(l)
# [0, 100, 200, 300, 1, 2]

Também se pode substituir o elemento original. Todos os elementos da gama especificada serão substituídos.

l = list(range(3))
print(l)
# [0, 1, 2]

l[1:2] = [100, 200, 300]
print(l)
# [0, 100, 200, 300, 2]