Coletânea Python do ZERO às Redes Neurais Artificiais
Manipulando partes de uma string via List Comprehension
Manipulando partes de uma string via List
Comprehension
Quando estamos trabalhando com strings é bastante comum realizar o fatiamento das mesmas para fazer uso de apenas algumas partes, isso é comumente feito referenciando o intervalo onde tais caracteres da string se encontram.
Por exemplo, na imagem acima, temos uma variável de nome string que tem como atributo uma série de números em formato de string.
No primeiro print( ) estamos buscando os caracteres dentro do intervalo de índice 0 a 10, da mesma forma o segundo print( ) exibirá os caracteres do índice 10 ao 20 e por fim a terceira função print( ) exibirá os caracteres indexados de 20 a 30.
Como esperado, temos as sequências de caracteres quanto ao seu fatiamento.
Podemos não somente otimizar este código como usar de outras funcionalidades via list comprehension.
Usando da mesma variável do exemplo anterior, note que agora criamos uma variável de nome n que recebe 10 como atributo. Em seguida criamos uma variável de nome comp que recebe como atributo uma list comprehension.
Dentro da mesma temos um laço for que percorrerá toda a extensão da variável string, iniciando em zero, lendo todo seu comprimento, pulando os números em um intervalo de 10 em 10 de acordo com o parâmetro definido em n.
Da mesma forma podemos, como já estamos habituados, a verificar o tamanho desse intervalo. Em outras palavras, de quantos em quantos elementos serão feitos os fatiamentos.
Sabendo o tamanho da string e definidos os intervalos, podemos perfeitamente extrair os dados em si. Lembrando que na variável string temos uma série de caracteres numéricos, porém em formato de texto.
Por fim, podemos pegar tais elementos e concatená-los, atribuindo os mesmos a uma nova variável. Nesse caso, criamos uma variável de nome lista que realiza o fatiamento dos dados lidos anteriormente.
Também é criada uma variável de nome retorno que via função join( ) pega tais dados, os concatena e atribui os mesmos para si.
Como esperado, para cada linha temos o respectivo retorno de nossas funções print( ). A primeira delas mostrando o intervalo a ser lido, na segunda linha o intervalo dos elementos (de qual a qual), na terceira linha os elementos fatiados em si, por fim na quarta linha os elementos concatenados da variável retorno.
Como este tópico pode inicialmente ser um pouco confuso, vamos realizar a otimização via list comprehension por meio de um exemplo prático.
Supondo que temos um simples sistema de carrinho de compras, onde podemos adicionar novos itens, realizar a leitura de tais itens via laço for e por fim somar os valores para fechar o carrinho de compras.
O método convencional basicamente é como o da imagem acima, usando de um laço for e algumas variáveis acessórias para ler e somar os valores dos itens do carrinho.
Apenas ressaltando que este método não está errado, tudo o que estamos trabalhando aqui é no sentido de tornar a performance de nosso código melhor, reduzindo o mesmo e usando de expressões que internamente demandam menor processamento.
Seguindo com nossa linha de raciocínio, o mesmo laço for usado anteriormente poderia ser otimizado fazendo o uso de algumas funções internas do Python como por exemplo a função sum( ) para a devida soma dos valores dos itens de carrinho.
Repare que aqui o que estamos fazendo é criando uma lista vazia na variável total2 onde o laço for percorre todos dados de carrinho, pegando apenas os elementos de índice 1, que no caso são os preços dos itens, adicionando para total2.
Aprimorando ainda mais o código, o mesmo pode ser reescrito por meio de uma list comprehension. Para isso criamos uma variável de nome total3 que recebe como atributo uma list comprehension.
Note que dentro da mesma temos uma expressão onde é feita a leitura de cada elemento em sua posição y, retornando a soma destes elementos.
Executando esse código, novamente temos os retornos das respectivas funções print( ) em suas respectivas linhas.
Na primeira, de acordo com o método convencional, na segunda com o método otimizado padrão e na terceira com o método otimizado via list comprehension.
Os resultados, como esperado, são os valores das somas dos itens de carrinho. Novamente salientando, uma vez que temos aqui 3 formas diferentes de se chegar ao mesmo resultado, o ideal em uma aplicação real é fazer o uso do meio de melhor performance, nesse caso, via list comprehension.