Olhando para escrever código elegante e Pythonic? Aqui está uma lista de one-liners úteis do Python para executar tarefas simples.
Se você for um programador Python iniciante, gastará tempo entendendo estruturas básicas de dados, como listas e strings. E algumas operações nessas estruturas de dados podem ser obtidas por meio de trechos de código concisos de uma linha.
Como programador, você deve priorizar a legibilidade e a manutenção em vez de tornar o código mais curto. Mas Python é fácil de criar one-liners que seguem boas práticas de codificação.
Neste artigo, vamos nos concentrar em one-liners para listas simples e tarefas de processamento de strings em Python.
Vamos começar!
últimas postagens
Gerar uma lista de números
A maneira mais simples de gerar uma lista de números é usando a função range(). A função range() retorna um objeto range que você pode converter em uma lista. Usar range(num) dará a sequência 0, 1, 2,.., num-1.
>>> nums = list(range(10)) >>> nums [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Mais sobre como usar a função range()
Você também pode usar a função range() junto com um valor de etapa opcional. Portanto, range (start, end, step) dará a sequência start, start + step, start + 2*step, e assim por diante. O último valor será start + k*step tal que (start + k*step) < end and (start + (k+1)*step) > end.
Encontre os valores máximo e mínimo em uma lista
Você pode usar as funções internas max e min para calcular os elementos máximo e mínimo em uma lista, respectivamente.
>>> min_elt, max_elt = min(nums), max(nums) >>> min_elt 0 >>> max_elt 9
📑 Nota sobre Atribuição Múltipla
Observe que atribuímos valores a min_elt e max_elt em uma única instrução de atribuição. O Python suporta essa atribuição múltipla. E isso pode ser útil ao descompactar iteráveis e atribuir valores a várias variáveis ao mesmo tempo.
Remover duplicatas de uma lista
Outra operação comum é remover duplicatas das listas do Python. Isso é necessário quando você precisa trabalhar apenas com os valores exclusivos. A maneira mais simples de fazer isso é converter a lista em um conjunto.
Um conjunto é uma estrutura de dados integrada cujos elementos são todos exclusivos e passíveis de hash.
>>> nums1 = [2,4,7,9,7,10]
Em nums1, o elemento 7 ocorre duas vezes. A conversão em um conjunto removerá a duplicata (aqui, 7), deixando-nos com uma lista de valores exclusivos.
Como ainda precisamos trabalhar com a lista, converteremos o conjunto de volta em uma lista. Esta operação pode ser realizada com a seguinte linha de código:
>>> nums1 = list(set(nums1)) >>> nums1 [2, 4, 7, 9, 10]
📒 Para saber mais sobre outras técnicas para remover duplicatas de listas do Python, confira este guia.
Contar ocorrências em uma lista
Para contar o número de vezes que um elemento ocorre em uma lista, você pode usar o método embutido count(). list.count(elt) retorna o número de vezes que elt ocorre na lista.
>>> nums [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Aqui, 7 ocorre uma vez na lista nums, então o método count() retorna 1.
>>> nums.count(7) 1
Verifique se todos os elementos da lista satisfazem uma condição
Para verificar se todos os elementos em uma lista satisfazem uma condição, você pode usar a função all() integrada do Python.
A função all() aceita um iterável como argumento e retorna True se todos os elementos no iterável forem avaliados como True (ou verdadeiros).
Aqui, gostaríamos de verificar se todos os elementos da lista nums2 são ímpares.
>>> nums2 = [3,4,7,11,21,67,12]
Podemos usar a compreensão de lista para construir uma lista de booleanos e podemos passar essa lista como argumento para a função all().
Aqui, num%2!=0 será False para os elementos 4 e 12 que são pares. Portanto, a lista de booleanos construída usando a expressão de compreensão de lista contém False (e all(list) retorna False).
>>> all([num%2!=0 for num in nums2]) False
💡 É importante observar que todas([]) (all(any-vazio-iterável) retorna True.
Verifique se algum elemento da lista satisfaz uma condição
Para verificar se algum elemento em uma lista satisfaz uma condição, você pode usar a função any(). any(some-list) retorna True se pelo menos um elemento for avaliado como True.
>>> nums2 = [3,4,7,11,21,67,12]
Como no exemplo anterior, usamos compreensão de lista para obter uma lista de booleanos. A lista nums contém números pares. Portanto, a função any() retorna True.
>>> any([num%2 for num in nums2]) True
Inverter uma String
Em Python, as strings são imutáveis, portanto, quando você deseja inverter uma string, só pode obter uma cópia invertida da string. Existem duas abordagens comuns — ambas podem ser escritas como one-liners do Python — que usam divisão de strings e funções internas.
Usando o corte de strings
A fatia de string com valores negativos de step retorna uma fatia da string começando do final. A sintaxe é string[start:stop:step]. Então, o que retorna a configuração da etapa -1 e ignorando os índices de início e parada?
Ele retorna uma cópia da string, começando no final da string – incluindo todos os caracteres.
>>> str1[::-1] 'olleh'
Usando a função reverse()
A função integrada reversed() retorna um iterador reverso em uma sequência.
>>> reversed(str1) <reversed object at 0x008BAF70> >>> for char in str1: ... print(char) ... h e l l o
Você pode usá-lo em conjunto com o método join(), conforme mostrado:
>>> ''.join(reversed(str1)) 'olleh'
Converter uma String em uma Lista de Caracteres
Suponha que gostaríamos de dividir uma string em uma lista de caracteres. Podemos fazer isso usando a expressão de compreensão de lista.
>>> str1 = 'hello'
As compreensões de lista são um dos one-liners mais poderosos em Python.
📒 Saiba mais sobre compreensão de lista em Python.
Fazemos um loop pela string e coletamos cada caractere.
>>> chars = [char for char in str1] >>> chars ['h', 'e', 'l', 'l', 'o']
Para dividir uma string mais longa em uma lista de strings em cada ocorrência de espaço em branco, você pode usar o método split().
>>> str2 = 'hello world' >>> str2.split() ['hello', 'world']
Já vimos como usar a compreensão de lista para dividir uma string em uma lista de caracteres. Nesse exemplo, coletamos todos os caracteres fazendo um loop na string.
Aqui, precisamos percorrer a string e coletar apenas os dígitos. Então, como fazemos isso?
- Podemos definir a condição de filtragem na expressão de compreensão da lista usando o método isdigit().
- c.isdigit() retorna True se c for um dígito; caso contrário, retorna False.
>>> str3 = 'python3' >>> digits = [c for c in str3 if c.isdigit()] >>> digits ['3']
Verifique se uma string começa com uma substring específica
Para verificar se uma string começa com uma substring específica, você pode usar o método de string startswith(). str1.startswith(substring) retorna True se str1 começa com substring. Caso contrário, retorna Falso.
Aqui estão alguns exemplos:
>>> str4 = 'coding' >>> str4.startswith('co') True
>>> str5 = 'python' >>> str5.startswith('co') False
Verifique se uma string termina com uma substring específica
Como você deve ter adivinhado, para verificar se uma string termina com uma determinada substring, você pode usar o método endswith().
>>> str5 = 'python' >>> str5.endswith('on') True
Também podemos usar o método string dentro de uma expressão de compreensão de lista para obter ends_with, uma lista de booleanos.
>>> strs = ['python','neon','nano','silicon']
>>> ends_with = [str.endswith('on') for str in strs] >>> ends_with [True, True, False, True]
Junte elementos de uma lista em uma string
Já vimos como dividir uma string em uma lista de caracteres. Agora, como fazemos a operação inversa de unir os elementos de uma lista em uma string?
Para fazer isso, você pode usar o método de string join() com a sintaxe: separator.join(some-list).
Gostaríamos apenas de combinar os elementos da lista em uma única string; não precisamos de nenhum separador. Portanto, definimos o separador como uma string vazia.
>>> list_1 = ['p','y','t','h','o','n','3'] >>> ''.join(list_1) 'python3'
Criar um dicionário Python
Assim como as compreensões de lista podem nos ajudar a construir novas listas a partir de iteráveis existentes, as compreensões de dicionário podem nos ajudar a construir novos dicionários a partir de iteráveis existentes.
As compreensões de dicionário do Python são frases simples poderosas que podem ajudar a construir um dicionário em tempo real.
Aqui, temos nomes que é uma lista de strings.
>>> names = ['Joe','Amy','Jake','Florence']
Criamos names_d, um dicionário contendo strings de nome como chaves e os comprimentos das strings como valor.
>>> names_d = {name:len(name) for name in names} >>> names_d {'Joe': 3, 'Amy': 3, 'Jake': 4, 'Florence': 8}
Atribuir valores condicionalmente a variáveis
Às vezes, pode ser necessário atribuir valores a variáveis dependendo de uma condição específica.
Por exemplo, você pode ler na entrada do usuário, digamos, a idade do indivíduo. E dependendo do valor de entrada, você pode decidir se eles podem ou não participar de uma festa.
Para fazer essa atribuição condicional em Python, você pode escrever o seguinte one-liner usando o operador ternário.
>>> age = 21 >>> allowed = True if age >= 18 else False >>> allowed True
🔖 Saiba mais sobre o operador ternário em Python.
Gerar Todas as Permutações
Permutação refere-se a um possível arranjo de elementos em um grupo. Se houver n elementos únicos em um grupo, haverá n! maneiras possíveis de organizá-los – e, portanto, n! permutações.
Vamos usar as seguintes letras de lista:
>>> letters = ['a','b','c']
Você pode usar permutações do módulo itertools para gerar todas as permutações possíveis do iterável fornecido.
>>> letters_p = permutations(letters) >>> letters_p <itertools.permutations object at 0x0127AF50>
Como visto, usando permutations(iterable) retorna um objeto de permutação que podemos percorrer usando um loop for:
>>> for p in letters_p: ... print(p) ... ('a', 'b', 'c') ('a', 'c', 'b') ('b', 'a', 'c') ('b', 'c', 'a') ('c', 'a', 'b') ('c', 'b', 'a')
Mas podemos reescrevê-lo como uma expressão de uma linha convertendo o objeto de permutação em uma lista:
>>> letters_p = list(permutations(letters)) >>> letters_p [('a', 'b', 'c'), ('a', 'c', 'b'), ('b', 'a', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b'), ('c', 'b', 'a')]
Aqui, existem três elementos únicos e 3!=6 permutações possíveis.
Gerar subconjuntos de uma lista
Às vezes, pode ser necessário construir todos os subconjuntos possíveis de um tamanho específico a partir de uma lista ou outros iteráveis. Vamos usar a lista de letras e obter todas as sublistas de tamanho 2.
Para isso, podemos usar combinações do módulo itertools, assim:
>>> from itertools import combinations
>>> letters_2 = list(combinations(letters,2)) >>> letters_2 [('a', 'b'), ('a', 'c'), ('b', 'c')]
Conclusão
Neste tutorial, examinamos one-liners úteis do Python para executar operações comuns em listas e strings. Também aprendemos one-liners como lista Python e compreensões de dicionário e como usá-los em conjunto com funções internas para executar as tarefas desejadas.
Como próximo passo, confira esta lista de projetos Python amigáveis para iniciantes.