<body><script type="text/javascript"> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener('load', function(){ object[attribute] = val; }, false); } else { window.attachEvent('onload', function(){ object[attribute] = val; }); } } </script> <div id="navbar-iframe-container"></div> <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script> <script type="text/javascript"> gapi.load("gapi.iframes:gapi.iframes.style.bubble", function() { if (gapi.iframes && gapi.iframes.getContext) { gapi.iframes.getContext().openChild({ url: 'https://www.blogger.com/navbar.g?targetBlogID\x3d17740096\x26blogName\x3dMurtog\x26publishMode\x3dPUBLISH_MODE_BLOGSPOT\x26navbarType\x3dBLUE\x26layoutType\x3dCLASSIC\x26searchRoot\x3dhttp://murtog.blogspot.com/search\x26blogLocale\x3dpt_BR\x26v\x3d2\x26homepageUrl\x3dhttp://murtog.blogspot.com/\x26vt\x3d-9075988469102890239', where: document.getElementById("navbar-iframe-container"), id: "navbar-iframe" }); } }); </script>

List comprehension - Python

List Comprehensions - Python

List Comprehensions é uma utilidade de Python pouco usada, mas de muito poder e utilidade.
É uma maneira de gerar uma lista sem usar as funções map, filter ou lambda.

- Sintaxe básica

A list comprehension mais básica consiste de uma expressão de retorno seguida de uma
declaração for:
[ funcao( iterador ) for iterador in objetoIteravel ]

Para compôr a lista, Python irá percorrer o objetoIteravel e para cada elemento nesse objeto,
irá adicionar à lista o resultado de funcao( iterador ).

Exemplo prático:

frases = [ "EU", "ADORO", "LIST COMPREHENSIONS" ]
lista = [ palavra.lower( ) for palavra in frases ]
print lista

O retorno será:

['eu', 'adoro', 'list comprehensions']

- Filtrando a lista gerada

As lists comprehensions têm a capacidade de filtrar a lista gerada usando um IF após a declaração
FOR. Vejamos o exemplo anterior com um if:

frases = [ "EU", "ADORO", "LIST COMPREHENSIONS" ]
lista = [ palavra.lower( ) for palavra in frases if palavra[0] in ("E", "A")]
print lista

Teremos a saída:

['eu', 'adoro'] ## somente as frases começadas por E ou A.

- Combinando fors

Também podemos iterar ao mesmo tempo em dois ou mais objetos iteráveis. Assim podemos fazer uma lista
baseada em outras duas listas, por exemplo:

"Dados dois vetores, retorne os elementos combinados que somados retornam valor maior que 5"

vet1 = [ 1, 2, 3 ]
vet2 = [ 2, 3, 4 ]

valores = [(x, y) for y in vet2 for x in vet1 if x + y > 5 ]
print valores

Teremos a saída:
[(3, 3), (2, 4), (3, 4)]


OBS: Notem que para retornar um lista de tuplas eu tive que pôr os valores-retorno entre parênteses, caso eu quisesse retornar
uma lista de listas, colocaria entre colchetes.

- Conselho

Tente sempre usar a sintaxe básica com, no máximo um, if e uma declaração for. Além disso ficará complicado e difícil de manter.
Antes da praticidade, vem a clareza. Lembre-se disso.

Sempre às ordens,
Murtog.
« Home | Próximo »
| Próximo »
| Próximo »
| Próximo »
| Próximo »
| Próximo »
| Próximo »
| Próximo »
| Próximo »
| Próximo »

5:12 AM

List Compreenshions são uma das grandes coisas do python, que me fazem gostar, cada vez mais, da linguagem.

Bom texto! (embora eu ainda me perca com uma lista dentro da outra)    



» Postar um comentário