Usando a função map em vez de for (Python)

Publicado por - em 04/03/2008

[ Hits: 18.224 ]

 


Usando a função map em vez de for (Python)



Uma coisa que muita gente não conhece no Python é a função map, vamos analisar esse código que criar uma lista com os quadrados dos números de 0 a 10:

final = []

def retornaquadrado(x):
    return x**2

for item in range(11):
    final.append(quadrado(item))

Deu pra ver que isso deixa e código muito grande, e pode ser simplificada usando o map, que é um comando parecido com o for, só que mais simples...

Segue um exemplo:

def retornaquadrado(x):
    return x**2

final = map(retornaquadrado,range(11))

Sim, essa linha (a definição da função não conta =P) é a mesma coisa que aquele código, e isso pode simplificar muito o seu programa! Espero que aproveite ;)

Outras dicas deste autor

Criando uma partição virtual no Linux

Leitura recomendada

EarSketch - Aplicativo online que usa Python para criar e remixar músicas

"RPG Maker" escrito em Python e Pygame

Spyder - Excelente IDE para desenvolver em Python

Instalando o IPython com extensão notebook no Linux Mint e Ubuntu

Como alterar a versão default (padrão) do Python no Linux

  

Comentários
[1] Comentário enviado por danltmz em 26/09/2009 - 10:58h

A função map é muito utilizada quando se usa o paradigma de programação funcional, e apesar de o funcionamento dela ser bem simples, seria bom explicar melhor aos iniciantes..

Funcionamento:

a função map recebe dois argumentos, o primeiro deles é o nome de uma função e o segundo uma lista, então map retorna uma outra lista que contem os resultados provenientes da ação daquela função sobre cada ítem da lista..

exemplificando, se tivéssemos:
--------------------
lista = []

def dobra(x):
....return x*2 #OBS: os 4 pontinhos nao fazem parte do código

lista = map(dobra,(1,2,3,4))
--------------------

após a execução da função map, a aparência de 'lista' seria '[2,4,6,8]'

Mas boa dica :)

[2] Comentário enviado por fr4z40 em 24/11/2015 - 08:16h

em alguns casos, vc nem precisa definir função, neste caso usado como exemplo... vc poderia ter usado "lambda"

final = map((lambda x: x ** 2),numeros)



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts