Aplicar a função a cada elemento de uma lista
Como é que aplico uma função à lista de entradas variáveis?
Por exemplo, a função filter
devolve valores verdadeiros, mas não o resultado real da função.
from string import upper
mylis=['this is test', 'another test']
filter(upper, mylis)
['this is test', 'another test']
o resultado esperado é:
['THIS IS TEST', 'ANOTHER TEST']
Eu sei upper
é embutido. Isto é apenas um exemplo.
2 answers
Acho que queres usar map
em vez de filter
:
>>> from string import upper
>>> mylis=['this is test', 'another test']
>>> map(upper, mylis)
['THIS IS TEST', 'ANOTHER TEST']
Ainda mais simples, você poderia usar str.upper
em vez de importar de string
(graças a @alecxe):
>>> map(str.upper, mylis)
['THIS IS TEST', 'ANOTHER TEST']
Em Python 2.x, map
constrói uma nova lista aplicando uma dada função a cada elemento de uma lista. filter
constrói uma nova lista, restringindo aos elementos que avaliam True
com uma dada função.
Em Python 3.construir iteradores x, map
e filter
em vez de Listas, por isso se estiver a usar o Python 3.x e exigir uma lista a abordagem de compreensão da lista seria mais adequado.
Ou, em alternativa, pode tomar um list comprehension
abordagem:
>>> mylis = ['this is test', 'another test']
>>> [item.upper() for item in mylis]
['THIS IS TEST', 'ANOTHER TEST']