quarta-feira, 27 de janeiro de 2021

Funções Lambda em Python

Em Python, uma função anônima significa que uma função não tem nome. Como já sabemos, a palavra-chave def é usada para definir uma função normal em Python. Da mesma forma, a palavra-chave lambda é usada para definir uma função anônima em Python. Possui a seguinte sintaxe: 

Sintaxe: argumentos lambda: expressão
  • Essa função pode ter qualquer número de argumentos, mas apenas uma expressão, que é avaliada e retornada.
  • Um é livre para usar funções lambda sempre que os objetos de função são necessários.
  • Você precisa estar ciente de que as funções lambda são sintaticamente restritas a uma única expressão.
  • Ele tem vários usos em campos específicos de programação, além de outros tipos de expressões em funções.

Vamos examinar este exemplo e tentar entender a diferença entre uma função definida por def normal e uma função lambda. Este é um programa que retorna o cubo de um determinado valor:

# Código Python para ilustrar o cubo de um número
# mostrando a diferença entre def () e lambda (). 
def cube(y): 
    return y*y*y 
  
lambda_cube = lambda y: y*y*y 
  
# usando a definição normal de uma função
print(cube(5)) 
  
# usando uma função lambda
print(lambda_cube(5)) 

Resultado:

125
125

Como podemos ver no exemplo acima, a função cube() e lambda_cube() se comportam da mesma forma e conforme pretendido. Vamos analisar o exemplo acima um pouco mais:

  • Sem usar Lambda: aqui, ambos retornam o cubo de um determinado número. Mas, ao usar def, precisamos definir uma função com um cubo de nome e passar um valor para ele. Após a execução, também precisamos retornar o resultado de onde a função foi chamada usando a palavra-chave return .
  • Usando Lambda: a definição de Lambda não inclui uma declaração de “retorno”, ela sempre contém uma expressão que é retornada. Também podemos colocar uma definição lambda em qualquer lugar em que uma função seja esperada e não precisamos atribuí-la a nenhuma variável. Essa é a simplicidade das funções lambda.

As funções lambda podem ser usadas junto com funções integradas como filter(), map() e reduce().

Usando a função lambda() com filter()

A função filter() em Python recebe uma função e uma lista como argumentos. Isso oferece uma maneira elegante de filtrar todos os elementos de uma sequência “sequência”, para a qual a função retorna True. Aqui está um pequeno programa que retorna os números ímpares de uma lista de entrada: 
 

Exemplo 1:

# Código python para ilustrar o uso de
# filter() com lambda() 
li = [5, 7, 22, 97, 54, 62, 77, 23, 73, 61] 
  
final_list = list(filter(lambda x: (x%2 != 0) , li)) 
print(final_list) 

Resultado:

[5, 7, 97, 77, 23, 73, 61]

Exemplo 2:

# Pessoas acima de 18 anos
ages = [13, 90, 17, 59, 21, 60, 5] 
  
adults = list(filter(lambda age: age>18, ages)) 
  
print(adults)

Resultado:

[90, 59, 21, 60]

Usando a função lambda() com map()

A função map() em Python recebe uma função e uma lista como argumento. A função é chamada com uma função lambda e uma lista e uma nova lista é retornada que contém todos os itens modificados por lambda retornados por aquela função para cada item. Exemplo: 
 

Exemplo 1:

# Código python para ilustrar o funcionamento da função
# map() com lambda() 
# para obter o dobro de uma lista
li = [5, 7, 22, 97, 54, 62, 77, 23, 73, 61] 
  
final_list = list(map(lambda x: x*2, li)) 
print(final_list) 

Resultado:

[10, 14, 44, 194, 108, 124, 154, 46, 146, 122]

Exemplo 2:

# Python program to demonstrate 
# use of lambda() function 
# with map() function 
animals = ['cão', 'gato', 'papagaio', 'coelho'] 
  
# aqui pretendemos mudar todos os nomes de animais
# para maiúsculas e retorna o mesmo
uppered_animals = list(map(lambda animal: str.upper(animal), animals)) 
  
print(uppered_animals)

Resultado:

['CÃO', 'GATO', 'PAPAGAIO', 'COELHO']

Usando a função lambda() com reduce()

A função reduce() em Python leva em uma função e uma lista como um argumento. A função é chamada com uma função lambda e um iterável e um novo resultado reduzido é retornado. Isso executa uma operação repetitiva sobre os pares do iterável. A função reduce() pertence ao módulo functools

Exemplo 1:

# Código Python para ilustrar a reduce()
# com lambda() para obter a soma de uma lista
  
from functools import reduce
li = [5, 8, 10, 20, 50, 100] 
sum = reduce((lambda x, y: x + y), li) 
print (sum) 

Resultado:

193

Aqui, os resultados dos dois elementos anteriores são adicionados ao próximo elemento e isso continua até o final da lista como (((((5+8)+10)+20)+50)+100).

Exemplo 2:

# código python para demonstrar o funcionamento de reduce()
# com uma função lambda

import functools  
  
# initializing list  
lis = [ 1 , 3, 5, 6, 2, ]  
  
# usando reduce para calcular o elemento máximo da lista
print("O elemento máximo da lista é: ",end="")  
print(functools.reduce(lambda a,b : a if a > b else b,lis))  

Resultado:

O elemento máximo da lista é: 6

Este artigo é uma contribuição de Chinmoy Lenka.

Artigo escrito por GeeksforGeeks e traduzido por Acervo Lima de Python Lambda Functions.

terça-feira, 26 de janeiro de 2021

Recebendo várias entradas do usuário em Python

O desenvolvedor geralmente deseja que um usuário insira vários valores ou entradas em uma linha. Em C ++ / C, o usuário pode receber várias entradas em uma linha usando scanf, mas no usuário Python pode receber vários valores ou entradas em uma linha por dois métodos. 

Usando o método split(): 
esta função ajuda a obter várias entradas do usuário. Ele quebra a entrada fornecida pelo separador especificado. Se um separador não for fornecido, qualquer espaço em branco será um separador. Geralmente, o usuário usa um método split() para dividir uma string Python, mas pode-se usá-lo para obter várias entradas.

Sintaxe: 

input().split(separador, maxsplit)

Exemplo: 

# Python program showing how to
# multiple input using split
 
# taking two inputs at a time
x, y = input("Enter a two value: ").split()
print("Number of boys: ", x)
print("Number of girls: ", y)
print()
 
# taking three inputs at a time
x, y, z = input("Enter a three value: ").split()
print("Total number of students: ", x)
print("Number of boys is : ", y)
print("Number of girls is : ", z)
print()
 
# taking two inputs at a time
a, b = input("Enter a two value: ").split()
print("First number is {} and second number is {}".format(a, b))
print()
 
# taking multiple inputs at a time 
# and type casting using list() function
x = list(map(int, input("Enter a multiple value: ").split()))
print("List of students: ", x)

Resultado: 
 

Usando a compreensão de listas: A compreensão de
listas é uma maneira elegante de definir e criar listas em Python. Podemos criar listas como afirmações matemáticas em apenas uma linha. Ele também é usado para obter várias entradas de um usuário. 

Exemplo: 

# Python program showing
# how to take multiple input
# using List comprehension
 
# taking two input at a time
x, y = [int(x) for x in input("Enter two value: ").split()]
print("First Number is: ", x)
print("Second Number is: ", y)
print()
 
# taking three input at a time
x, y, z = [int(x) for x in input("Enter three value: ").split()]
print("First Number is: ", x)
print("Second Number is: ", y)
print("Third Number is: ", z)
print()
 
# taking two inputs at a time
x, y = [int(x) for x in input("Enter two value: ").split()]
print("First number is {} and second number is {}".format(x, y))
print()
 
# taking multiple inputs at a time 
x = [int(x) for x in input("Enter multiple value: ").split()]
print("Number of list is: ", x) 

Resultado : 
 

Observação: os exemplos acima aceitam entradas separadas por espaços. No caso de desejarmos ter a entrada separada por vírgula (,), podemos usar o seguinte: 

# taking multiple inputs at a time separated by comma
x = [int(x) for x in input("Enter multiple value: ").split(",")]
print("Number of list is: ", x) 
Artigo escrito por ABHISHEK TIWARI 13 e traduzido por Acervo Lima de Taking multiple inputs from user in Python.

Python String - split()

O método split() retorna uma lista de strings após quebrar a string dada pelo separador especificado.

Sintaxe: str.split (separador, maxsplit)
Parâmetros:
separador:
este é um delimitador. A string se divide neste separador especificado. Se não for fornecido, qualquer espaço em branco será um separador.
maxsplit: é um número, que nos diz para dividir a string no máximo do número de vezes fornecido. Se não for fornecido, não há limite.
Retorna: Retorna uma lista de strings depois de quebrar a string fornecida pelo separador especificado.

CÓDIGO 1


text = 'geeks for geeks'
  
# quebra a string nos epaços em branco
print(text.split()) 

word = 'geeks, for, geeks'
  
# quebra a string quando encontra ',' 
print(word.split(',')) 
  
word = 'geeks:for:geeks'
  
# quebra a string quando encontra ':' 
print(word.split(':')) 
  
word = 'CatBatSatFatOr'
  
# quebra em 3 
print([word[i:i+3] for i in range(0, len(word), 3)]) 

Resultado :

['geeks', 'para', 'geeks']
['geeks', 'para', 'geeks']
['geeks', 'para', 'geeks']
['Gato', 'Morcego', 'Sáb', 'Gordo', 'Ou']

CÓDIGO 2

word = 'geeks, for, geeks, pawan'
  
# maxsplit: 0 
print(word.split(', ', 0)) 
  
# maxsplit: 4 
print(word.split(', ', 4)) 
  
# maxsplit: 1 
print(word.split(', ', 1)) 

Resultado :

['geeks, for, geeks, pawan']
['geeks', 'para', 'geeks', 'pawan']
['geeks', 'para, geeks, pawan']

Artigo escrito por pawan_asipu e traduzido por Acervo Lima de Python String | split().

Compreensão e segmentação da lista Python

A compreensão de listas é uma maneira elegante de definir e criar uma lista em python. Podemos criar listas apenas como declarações matemáticas e em apenas uma linha. A sintaxe de compreensão de lista é mais fácil de entender.

A compreensão de uma lista geralmente consiste nestas partes:

Por exemplo :

lst = [x ** 2 para x no intervalo (1, 11) se x% 2 == 1] 

aqui, x ** 2 é a expressão de saída, 
      intervalo (1, 11) é a sequência de entrada, 
      x é variável e   
      se x % 2 == 1 é parte do predicado.

Exemplo 1:

# Programa Python para demonstrar compreensão de listas em Python

# A lista abaixo contém o quadrado de todos os números ímpares do
# intervalo 1 a 10  
odd_square = [x ** 2 for x in range(1, 11) if x % 2 == 1]  
print (odd_square)  
  
# para compreensão, a geração acima é igual a,  
odd_square = []  
for x in range(1, 11):  
    if x % 2 == 1:  
        odd_square.append(x**2)  
print(odd_square)  
  
# a lista abaixo contém potência de 2 de 1 a 8
power_of_2 = [2 ** x for x in range(1, 9)]  
print(power_of_2)  
  
# a lista abaixo contém primos e não primos no intervalo de 1 a 50
noprimes = [j for i in range(2, 8) for j in range(i*2, 50, i)]  
primes = [x for x in range(2, 50) if x not in noprimes]  
print(primes)  
  
# lista para diminuir os personagens
print([x.lower() for x in ["A","B","C"]]) 
  
# lista que extrai o número
string = "my phone number is : 11122 !!"
  
print("\nExtracted digits")  
numbers = [x for x in string if x.isdigit()]  
print (numbers)  
  
# Uma lista de lista para tabuada
a = 5
table = [[a, b, a * b] for b in range(1, 11)]  
  
print("\nMultiplication Table")  
for i in table:  
    print (i)  

Resultado:

[1, 9, 25, 49, 81]
[1, 9, 25, 49, 81]
[2, 4, 8, 16, 32, 64, 128, 256]
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
['a', 'b', 'c']

Dígitos extraídos
['1', '1', '1', '2', '2']

Tabela de multiplicação
[5, 1, 5]
[5, 2, 10]
[5, 3, 15]
[5, 4, 20]
[5, 5, 25]
[5, 6, 30]
[5, 7, 35]
[5, 8, 40]
[5, 9, 45]
[5, 10, 50]

Depois de obter a lista, podemos obter uma parte dela usando o operador de fatiamento do python, que tem a seguinte sintaxe:


[start : stop : steps]

o que significa que o corte começará do início do índice
 subirá até stop no paso steps.
 O valor padrão de start é 0, a stop é o último índice da lista
 e para step é 1 

Assim, [:stop] dividirá a lista do início ao fim do índice e [start:] dividirá a lista do índice inicial até o final O valor negativo das etapas mostra o percurso da direita para a esquerda em vez de o percurso da esquerda para a direita. É por isso que [::-1] imprime a lista na ordem inversa.

Exemplo 2:

# Vamos primeiro criar uma lista para demonstrar o fatiamento
# lst contém todos os números de 1 a 10
lst =list(range(1, 11)) 
print (lst) 
   
# a lista abaixo tem números de 2 a 5
lst1_5 = lst[1 : 5] 
print (lst1_5) 
   
# a lista abaixo tem números de 6 a 8
lst5_8 = lst[5 : 8] 
print (lst5_8) 
   
# a lista abaixo tem números de 2 a 10
lst1_ = lst[1 : ] 
print (lst1_) 
   
# a lista abaixo tem números de 1 a 5
lst_5 = lst[: 5] 
print (lst_5) 
   
# a lista abaixo tem números de 2 a 8 na etapa 2
lst1_8_2 = lst[1 : 8 : 2] 
print (lst1_8_2) 
   
# a lista abaixo tem números de 10 a 1
lst_rev = lst[ : : -1] 
print (lst_rev) 
   
# a lista abaixo tem números de 10 a 6 na etapa 2
lst_rev_9_5_2 = lst[9 : 4 : -2] 
print (lst_rev_9_5_2) 

Resultado:

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

Podemos usar a função filter para filtrar uma lista com base em alguma condição fornecida como uma expressão lambda como primeiro argumento e lista como o segundo argumento, exemplo dos quais é mostrado a seguir:

Exemplo 3:

import functools 
  
#  filtering odd numbers 
lst = filter(lambda x : x % 2 == 1, range(1, 20)) 
print (list(lst)) 
   
#  filtering odd square which are divisible by 5 
lst = filter(lambda x : x % 5 == 0,  
      [x ** 2 for x in range(1, 11) if x % 2 == 1]) 
print (list(lst)) 
   
#   filtering negative numbers 
lst = filter((lambda x: x < 0), range(-5,5)) 
print (list(lst)) 
   
#  implementing max() function, using 
print (functools.reduce(lambda a,b: a if (a > b) else b, [7, 12, 45, 100, 15])) 

Resultado:

[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
[25]
[-5, -4, -3, -2, -1]
100

Este artigo é uma contribuição de Utkarsh Trivedi. Escreva comentários se encontrar algo incorreto ou se quiser compartilhar mais informações sobre o tópico discutido acima.

Artigo escrito por GeeksforGeeks e traduzido por Acervo Lima de Python List Comprehension and Slicing.

Recebendo entrada em Python

Os desenvolvedores geralmente precisam interagir com os usuários, seja para obter dados ou fornecer algum tipo de resultado. A maioria dos programas hoje usa uma caixa de diálogo como uma forma de solicitar ao usuário algum tipo de entrada. Já o Python nos fornece duas funções embutidas para ler a entrada do teclado.

input(): esta função primeiro obtém a entrada do usuário e, em seguida, avalia a expressão, o que significa que o Python identifica automaticamente se o usuário inseriu uma string ou um número ou lista. Se a entrada fornecida não estiver correta, o erro de sintaxe ou a exceção é gerado pelo python. Por exemplo -

# Python program showing
# a use of input()

val = input("Enter your value: ")
print(val)

Saída:

 
como a função input funciona em Python:

Código:

# Program to check input
# type in Python

num = input("Enter number :")
print(num)
name1 = input("Enter name : ")
print(name1)

# Printing type of input value
print ("type of number", type(num))
print ("type of name", type(name1))

Resultado :

raw_input(): Esta função funciona em versões anteriores (como Python 2.x). Esta função pega exatamente o que foi digitado no teclado, converte em string e depois retorna para a variável na qual queremos armazenar. Por exemplo -

# Python program showing
# a use of raw_input()

g = raw_input("Enter your name : ")
print g

Resultado :

Aqui, g é uma variável que obterá o valor da string, digitada pelo usuário durante a execução do programa. A digitação de dados para a raw_input()função é encerrada com a tecla Enter. Podemos usar raw_input()para inserir dados numéricos também. Nesse caso, usamos typecasting. Para obter mais detalhes sobre typecasting, consulte isto.
 

Consulte o artigo Obtendo a lista como entrada do usuário para obter mais informações.

Artigo escrito por ABHISHEK TIWARI 13 e traduzido por Acervo Lima de Taking input in Python.

Obtendo entrada do console em Python

O que é console em Python?Console (também chamado de Shell) é basicamente um interpretador de linha de comando que recebe a entrada do usuário, ou seja, um comando por vez e a interpreta. Se estiver livre de erros, ele executa o comando e fornece a saída necessária, caso contrário mostra a mensagem de erro. Um console Python se parece com isso.

Aqui nós escrevemos o comando e para executá-lo basta pressionar a tecla Enter e seu comando será interpretado.
Para programar em Python, você deve conhecer os fundamentos do console usado em Python.

O prompt principal do console python são os três símbolos maiores que

>>>

Você está livre para escrever o próximo comando no shell somente quando, após a execução do primeiro comando, esses prompts aparecerem. O console Python aceita comandos em Python que você escreve após o prompt.

Aceitar entrada do console
usuário insere os valores no console e esse valor é então usado no programa conforme necessário.
Para obter a entrada do usuário, usamos a função interna input().

# input 
input1 = input() 
  
# output 
print(input1) 

Também podemos converter esta entrada para inteiro, float ou string especificando a função input() dentro do tipo.

Artigo escrito por DikshaTewari e traduzido por Acervo Lima de Taking input from console in Python.

Python - Obtenha uma lista como entrada do usuário

Frequentemente encontramos uma situação em que precisamos pegar um número / string como entrada do usuário. Neste artigo, veremos como obter como entrada uma lista do usuário.

Exemplos:

Entrada: n = 4, ele = 1 2 3 4
Saída:   [1, 2, 3, 4]

Entrada: n = 6, ele = 3 4 1 7 9 6
Saída: [3, 4, 1, 7, 9, 6]

Código # 1: exemplo básico

# creating an empty list
lst = []

# number of elemetns as input
n = int(input("Enter number of elements : "))

# iterating till the range
for i in range(0, n):
    ele = int(input())

    lst.append(ele) # adding the element

print(lst)

Resultado:

 
Código # 2: com manipulação de exceção

# try block to handle the exception
try:
    my_list = []

    while True:
        my_list.append(int(input()))

# if the input is not-integer, just print the list
except:
    print(my_list)

Resultado:

 
Código # 3: Usando map()

# number of elements
n = int(input("Enter number of elements : "))

# Below line read inputs from user using map() function
a = list(map(int,input("\nEnter the numbers : ").strip().split()))[:n]

print("\nList is - ", a)

Resultado:

 
Código # 4: Lista de listas como entrada

lst = []
n = int(input("Enter number of elements : "))

for i in range(0, n):
    ele = [input(), int(input())]
    lst.append(ele)

print(lst)

Resultado:

Código # 5: usando compreensão de lista e definição de tipos

# For list of integers
lst1 = []

# For list of strings/chars
lst2 = []

lst1 = [int(item) for item in input("Enter the list items : ").split()]

lst2 = [item for item in input("Enter the list items : ").split()]

print(lst1)
print(lst2)

Resultado:

Artigo escrito por dileep1998 e traduzido por Acervo Lima de Python | Get a list as input from user.