• Python
  • 09. Strings e Fatiamento
  • Fatiamento

09. Strings e Fatiamento#

Extraindo substrings com fatiamento#

A operação de fatiamento permite realizarmos um recorte da string. A sintaxe é semelhante ao acesso a um caractere usando o índice, mas ao invés de um número nós passamos um intervalo:

Usando fatiamento em strings

A semântica é semelhante ao range: o fatiamento inclui o primeiro índice e não inclui o segundo. Assim, no exemplo acima, o fatiamento s[2:4] inclui o índice 2, mas não inclui o 4. Portanto apenas os caracteres nos índices 2 e 3 estão presentes no resultado do fatiamento.

Exercise 1

Considere o código a seguir:

palavra = 'Fatiamento'
print(palavra[3:6])
Ao testar o código, o que foi impresso no terminal?

Answer

Foi impresso 'iam'. Lembrando que, assim como o range, no fatiamento o segundo argumento não conta para o resultado final. Ou seja, a letra 'e' que ocupa o índice 6 não aparece no string retornada pelo comando palavra[3:6].

Resultado do fatiamento dos índices 3 a 6.

Alternativamente, podemos omitir um (ou ambos) dos índices:

Fatiamento omitindo algum dos índices

Exercise 2

Considere o código a seguir:

palavra = 'Fatiamento'
print(palavra[:5])
Ao testar o código, o que foi impresso no terminal?

Answer

Foi impresso 'Fatia'. Quando o índice inicial começa em 0, podemos omitir o valor. Desta forma, palavra[0:5] é igual ao código palavra[:5]

Resultado do fatiamento dos índices 0 a 5.

Exercise 3

Considere o código a seguir:

palavra = 'Fatiamento'
print(palavra[5:])
Ao testar o código, o que foi impresso no terminal?

Answer

Foi impresso 'mento'. Quando o fatiamento vai até o final da string, podemos omitir o segundo índice. Desta forma, palavra[5:10] é igual ao código palavra[5:]

Resultado do fatiamento dos índices 5 a 10.

Exercise 4

Resolva o exercício Nomes de usuários.

Dica: Você pode utilizar a função pos_arroba do exercício Posição do @

Acessar exercício

Assim como no range, podemos passar um terceiro argumento opcional para um fatiamento. Esse terceiro argumento indica o tamanho do pulo, ou seja, de quanto em quanto o índice deve ser aumentado (por padrão ele aumenta de 1 em 1). Por exemplo, 'abcdefghij'[0:10:2] vai retornar uma nova string do índice 0 ao 9 pulando de 2 em 2, ou seja, a string 'acegi'.

Exercise 5

Considere o código a seguir:

palavra = 'Fatiamento'
print(palavra[1:9:2])
Ao testar o código, o que foi impresso no terminal?

Answer

Foi impresso 'aimn'. O código palavra[1:9:2] faz o fatiamento da string, começando no índice 1, terminando no índice 8, pulando os índices de 2 em 2.

Resultado do fatiamento dos índices 1 a 9, pulando 2 em 2.

Além do fatiamento, pode ser útil usarmos índices negativos. Os índices negativos tem um efeito semelhante aos índices positivos, mas vão do final para o começo. Por exemplo, o índice -1 é o último elemento, o índice -2 é o penúltimo elemento, o índice -3 é o antepenúltimo elemento, e assim por diante.

Mais sobre fatiamento e indexação

No exemplo acima apresentamos uma técnica bastante utilizada para inverter uma string, que é o uso do fatiamento [::-1]. Ele pode ser útil em alguns exercícios do servidor.

Exercise 6

Considere o código a seguir:

palavra = 'LuzAzul'
print(palavra[::-1])
Ao testar o código, o que foi impresso no terminal?

Answer

Foi impresso 'luzAzuL'. O código palavra[::-1] é igual ao código palavra[-1:-8:-1]. Desta forma, o fatiamento da string, começando no índice -1, terminando no índice -7, percorrendo a string de -1 em -1.

Resultado do fatiamento dos índices -1 a -8, pulando -1 em -1.

Fatiamento em listas#

Dissemos no começo do handout que existem muitas semelhanças entre listas e strings em Python. Uma delas é que também é possível realizar fatiamentos de listas, da mesma maneira como fizemos com strings.

Exercise 7

Considere a lista com números inteiros de 0 a 10:

numeros = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Utilizando o fatiamento sobre a variável numeros, qual das alternativas a seguir retorna uma lista de números pares ([0, 2, 4, 6, 8, 10])?

Answer

O código numeros[::2] retorna a lista [0, 2, 4, 6, 8, 10].

No código numeros[::2], os dois primeiros valores foram omitidos, mas podemos reescrever o código da seguinte forma: numeros[0:11:2].

Exercise 8

Resolva o exercício Lista alunos impares.

Acessar exercício

EXERCÍCIOS#

Exercise 9

Resolva o exercício Aniversariantes de setembro.

Acessar exercício

Exercise 10

Resolva o exercício Conta bigramas.

Acessar exercício

Exercise 11

Resolva o exercício Verifica palindromo.

Acessar exercício

Exercise 12

Resolva o exercício Forma trios.

Acessar exercício

EXERCÍCIOS ADICIONAIS#

Exercise 13

Como sempre, resolva os outros exercícios disponíveis.