Iteradores independentes na compreensão de lista
Em Python, as compreensões de lista permitem vários loops de iteração. Considere o seguinte exemplo:
[(x, y) for x in a for y in b]
onde aeb são sequências. Essa compreensão cria pares de elementos do produto cartesiano de a e b.
Os iteradores podem ser dependentes?
Um iterador em uma compreensão de lista pode referir-se a outro? A resposta é sim, e o código a seguir demonstra isso:
[x for x in a for a in b]
Nesta compreensão, o iterador do loop externo a se torna o iterador para o loop interno. Isso efetivamente nivela uma lista aninhada.
Exemplo
Se tivermos uma lista aninhada, a:
a = [[1, 2], [3, 4]]
A seguinte compreensão da lista a achataria em uma única lista:
[x for x in a for a in b]
Resultado:
[1, 2, 3, 4]
Solução alternativa usando geradores
No código Python fornecido, o texto é armazenado como frases e a tarefa é extrair uma única lista de palavras. Veja como você pode conseguir isso usando um gerador:
text = (("Hi", "Steve!"), ("What's", "up?"))
gen = (word for sentence in text for word in sentence)
A variável gen agora produz a lista achatada de palavras:
for word in gen:
print(word)
Saída:
Hi Steve! What's up?
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3