Expressões do Gerador Python

Resumo : neste tutorial, você aprenderá sobre a expressão geradora Python para criar um objeto gerador.

Introdução às expressões geradoras

Uma expressão geradora é uma expressão que retorna um objeto gerador .

Basicamente, uma função geradora é uma função que contém uma yieldinstrução e retorna um objeto gerador.

Por exemplo, o seguinte define uma função geradora:

def squares(length):
    for n in range(length):
        yield n ** 2Linguagem de código:  JavaScript  ( javascript )

A squaresfunção geradora retorna um objeto gerador que produz números quadrados de inteiros de 0até length - 1.

Como um objeto gerador é um iterador , você pode usar um loop for para iterar sobre seus elementos:

for square in squares(5):
    print(square)Linguagem de código:  PHP  ( php )

Saída:

0
1
4
9
16

Uma expressão geradora fornece uma maneira mais simples de retornar um objeto gerador.

O exemplo a seguir define uma expressão geradora que retorna números quadrados de inteiros de 0 a 4:

squares = (n** 2 for n in range(5))

Como the squaresé um objeto gerador, você pode iterar sobre seus elementos assim:

for square in squares:
    print(square)Linguagem de código:  PHP  ( php )

Como você pode ver, em vez de usar uma função para definir uma função geradora, você pode usar uma expressão geradora.

Uma expressão geradora é como uma compreensão de lista em termos de sintaxe. Por exemplo, uma expressão geradora também suporta sintaxes complexas, incluindo:

  • declarações if
  • Vários loops aninhados
  • Compreensões aninhadas

No entanto, uma expressão geradora usa parênteses ()em vez de colchetes [].

Expressões geradoras vs compreensões de lista

A seguir mostramos como usar a compreensão de lista para gerar números quadrados de 0 a 4:

square_list = [n** 2 for n in range(5)]

E isso define um gerador de números quadrados:

square_generator = (n** 2 for n in range(5))

1) Sintaxe

Em termos de sintaxe, uma expressão geradora usa parênteses ()enquanto uma compreensão de lista usa colchetes [].

2) Utilização de memória

Uma compreensão de lista retorna uma lista enquanto uma expressão geradora retorna um objeto gerador.

Isso significa que uma compreensão de lista retorna uma lista completa de elementos antecipadamente. No entanto, uma expressão geradora retorna uma lista de elementos, um de cada vez, com base na solicitação.

A compreensão de uma lista é rápida, enquanto uma expressão geradora é preguiçosa.

Em outras palavras, uma compreensão de lista cria todos os elementos imediatamente e carrega todos eles na memória.

Por outro lado, uma expressão geradora cria um único elemento com base na solicitação. Ele carrega apenas um único elemento na memória.

3) Iterável vs iterador

Uma compreensão de lista retorna um iterável . Isso significa que você pode iterar o resultado de uma compreensão de lista repetidas vezes.

No entanto, uma expressão geradora retorna um iterador , especificamente um iterador lento. Torna-se exaustivo quando você conclui a iteração.

Resumo

  • Use uma expressão de gerador Python para retornar um gerador.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *