freeCodeCamp/guide/portuguese/python/lists/list-comprehension/index.md

116 lines
4.2 KiB
Markdown
Raw Normal View History

---
title: List Comprehension
localeTitle: Compreensão de lista
---
## Compreensão de lista
A compreensão de lista é uma forma de percorrer uma lista para produzir uma nova lista com base em algumas condições. Pode ser confuso no começo, mas uma vez que você esteja acostumado com a sintaxe, ela é muito poderosa e rápida.
O primeiro passo para aprender a usar a compreensão de listas é olhar para a maneira tradicional de fazer um loop através de uma lista. A seguir, um exemplo simples que retorna uma nova lista de números pares.
```python
# Example list for demonstration
some_list = [1, 2, 5, 7, 8, 10]
# Empty list that will be populate with a loop
even_list = []
for number in some_list:
if number % 2 == 0:
even_list.append(number)
# even_list now equals [2, 8, 10]
```
Primeiro, uma lista é criada com alguns números. Em seguida, você cria uma lista vazia que armazenará seus resultados do loop. No loop, você verifica se cada número é divisível por 2 e, se for o caso, você adiciona o mesmo a lista de par. Isso levou 5 linhas de código, não incluindo comentários e espaço em branco, o que não é muito neste exemplo.
Agora, para o exemplo de compreensão de lista.
```python
# Example list for demonstration
some_list = [1, 2, 5, 7, 8, 10]
# List Comprehension
even_list = [number for number in some_list if number % 2 == 0]
# even_list now equals [2, 8, 10]
```
Outro exemplo, com os mesmos dois passos: A seguir, será criada uma lista de números que correspondem aos números em `my_starting_list` multiplicados por 7.
```py
my_starting_list = [1, 2, 3, 4, 5, 6, 7, 8]
my_new_list = []
for item in my_starting_list:
my_new_list.append(item * 7)
```
Quando este código é executado, o valor final de `my_new_list` é: `[7, 14, 21, 28, 35, 42, 49, 56]`
Um desenvolvedor usando a compreensão da lista pode obter o mesmo resultado usando a seguinte compreensão de lista, o que resulta na mesma `my_new_list` .
```py
my_starting_list = [1, 2, 3, 4, 5, 6, 7, 8]
my_new_list = [item * 7 for item in my_starting_list]
```
Uma fórmula simples para escrever de uma forma de compreensão de lista é:
`my_list = [{operation with input n} for n in {python iterable}]`
Substitua `{operation with input n}` por no entanto, você deseja alterar o item retornado do iterável. O exemplo acima usa `n * 7` mas a operação pode ser tão simples ou tão complexa quanto necessário.
Substitua `{python iterable}` por qualquer iterável. [Tipos de seqüência](https://guide.freecodecamp.org/python/sequence-types) serão mais comuns. Uma lista foi usada no exemplo acima, mas tuplas e intervalos também são comuns.
A compreensão da lista adiciona um elemento de uma lista existente a uma nova lista se alguma condição for atendida. É mais puro, mas também é muito mais rápido na maioria dos casos. Em alguns casos, a compreensão da lista pode dificultar a legibilidade, portanto, o desenvolvedor deve pesar suas opções ao escolher usar a compreensão da lista.
## Exemplos de compreensão de lista com condicionais
O fluxo de controle em compreensões de lista pode ser controlado usando condicionais. Por exemplo:
```py
only_even_list = [i for i in range(13) if i%2==0]
```
Isso é equivalente ao seguinte loop:
```py
only_even_list = list()
for i in range(13):
if i%2 == 0:
only_even_list.append(i)
```
A compreensão da lista também pode conter condições aninhadas. Considere o seguinte loop:
```py
divisible = list()
for i in range(50):
if i%2 == 0:
if i%3 == 0:
divisible.append(i)
```
Usando a compreensão da lista, isso pode ser escrito como:
```py
divisible = [i for i in range(50) if i%2==0 if i%3==0]
```
A instrução If-Else também pode ser usada junto com a compreensão da lista.
```py
list_1 = [i if i%2==0 else i*-1 for i in range(10)]
```
#### Mais Informações:
[Estruturas de Dados Python - Listas](https://docs.python.org/2.7/tutorial/datastructures.html)
[Python For Loops](https://guide.freecodecamp.org/python/for-loop-statements)
[Listas de Python](https://guide.freecodecamp.org/python/learn-about-python-lists)
[Python Para Iniciantes - Compre Compreensão](http://www.pythonforbeginners.com/basics/list-comprehensions-in-python)