Para entender a atribuição de fatia do Python, você deve pelo menos ter uma compreensão decente de como funciona a fatia.
link : https://www.usandopy.com/2021/12/compreendendo-notacao-de-fatia-de.html
Aqui está uma rápida recapitulação:
[ iniciar_em : parar_antes : etapa ]
Onde iniciar_em é o índice do primeiro item a ser retornado (incluído), parar_antes é o índice do elemento antes do qual parar (não incluído) e etapa é a distância entre dois itens quaisquer.
A atribuição de fatias tem a mesma sintaxe que dividir uma lista, com a única exceção de que é usada no lado esquerdo de uma expressão em vez de no lado direito.
Como o fatiamento retorna uma lista, a atribuição de fatias requer uma lista (ou outro iterável). E, como o nome indica, o lado direito deve ser o valor a ser atribuído à fatia do lado esquerdo da expressão. Por exemplo:
numeros = [1, 2, 3, 4, 5]
# replace elements 0 through 1
numeros[:1] = [6] # [6, 2, 3, 4, 5]
# replace elements 1 through 3
numeros[1:3] = [7, 8] # [6, 7, 8, 4, 5]
# replace the last 2 elements
numeros[-2:] = [9, 0] # [6, 7, 8, 9, 0]
Mudança de comprimento
A parte da lista retornada pela fatia no lado esquerdo da expressão é a parte da lista que será alterada pela atribuição da fatia. Isso significa que você pode usar a atribuição de fatias para substituir parte da lista por uma lista diferente, cujo comprimento também é diferente da fatia retornada. Por exemplo:
numeros = [1, 2, 3, 4, 5]
# substitua 3 elementos por 2
numeros [1: 4] = [6, 7] # [1, 6, 7, 5]
# substitui 1 elemento por 3
numeros [-1:] = [8, 9, 0] # [1, 6, 7, 8, 9, 0]
# substitui 1 elemento por 0
numeros [: 1] = [] # [6, 7, 8, 9, 0]
numeros = [1, 2, 3, 4, 5]
# insira 2 elementos
numeros [2: 2] = [6, 7] # [1, 2, 6, 7, 3, 4, 5]
# anexar 2 elementos
numeros [7:] = [8, 9] # [1, 2, 6, 7, 3, 4, 5, 8, 9]
# prefixo 1 elemento
numeros [: 0] = [0] # [0, 1, 2, 6, 7, 3, 4, 5, 8, 9]
# substitui a lista inteira por uma nova
numeros [:] = [4, 2] # [4, 2]
Usando etapas
Por último, mas não menos importante, etapa também é aplicável na atribuição de fatias e você pode usá-lo para substituir elementos que correspondem à iteração após cada passo. A única diferença é que se o passo não for 1, a lista inserida deve ter exatamente o mesmo comprimento que a fatia da lista retornada. Por exemplo:
numeros = [1, 2, 3, 4, 5]
# substitua cada segundo elemento, 2 a 5
numeros [2: 5: 2] = [6, 7] # [1, 2, 6, 4, 7]
# não pode substituir 2 elementos por 3
numeros [2: 5: 2] = [6, 7, 8] # Lança um ValueError
# substituição reversa, 1 até início
numeros [1 :: - 1] = [9, 0] # [0, 9, 6, 4, 7]
0 Comentários