Existem três funções básicas em Python, nomeadamente filter(), map() e reduzir(). Elas nos fornecem funções de filtragem, mapeamento e agregação, respectivamente. Na seção anterior, simplesmente usamos a função filter() combinada com uma função anônima. Abaixo apresentaremos seu uso em detalhes.
Ao filtrar e filtrar dados, geralmente usamos a função filter() para nos ajudar a resolver o problema rapidamente. Seu formato de sintaxe é:
filter(função, objeto iterável)
Na função de filtro, coloque nosso método de filtragem ou filtragem, ou seja, o nome da função , na frente e armazene o objeto iterável atrás.
deftest(x):ifx%2==0:returnxmy_list=[1,2,3,4,5,6]print(filter(test,my_list))#Só preciso de alguns nomes de funções, nenhum parâmetro é necessário
Resultado de saída:
<filterobjectat0x034C2DD8>
Em relação a este exemplo, primeiro definimos uma função test(), que retorna seu valor se x for um número par e, em seguida, usamos a função test() para filtrar a lista my_list por meio da função filter(), mas o resultado de saída é < filter em 0x034C2DD8> , aqui precisamos observar que o valor de retorno da função filter() é um objeto iterável e precisamos acessar os valores iterativamente ou usar a função list() para forçar a conversão de tipo.
deftest(x):ifx%2==0:returnxmy_list=[1,2,3,4,5,6]print(filter(test,my_list))foriinfilter(test,my_list):print('after iteration Dados: ',i)print('Use o método list():',list(filter(teste,minha_lista)))
A saída é:
Dados na iteração: 2 Dados na iteração: 4 Dados na iteração: 6 Usando o método list(): [2, 4, 6]
Já usamos a função map() muitas vezes. Por exemplo, quando inserimos vários valores, usaremos a função map() quando precisarmos inserir quatro valores:
a,b,c,d=mapa(int,input().split())print(a,b,c,d)
O formato de sintaxe da função map() é:
map(função, objeto iterável)
Ao usar a função map(), nós a usamos principalmente para processamento de dados. Os dados no objeto iterável são armazenados após serem processados pela função.
Vejamos primeiro o exemplo acima de inserção de quatro valores. Int é uma função, e o valor inserido por input().splite é um objeto iterável, que é armazenado no objeto de mapa após ser processado pela função int.
Podemos usar a função map() para processar todos os dados em uma sequência através de uma função, veja o exemplo a seguir:
Armazenamos as letras em uma lista e, se existir uma letra minúscula, colocamos-a em maiúscula.
O código é o seguinte:
deftest(x):ifx.islower():returnx.upper()else:returnxmy_list=['d','o','t','C','p','P']print(lista(mapa (teste, minha_lista)))
A saída é:
['D','O','T','C','P','P']
A função test() julgará primeiro x. Se for uma letra minúscula, retornará sua letra maiúscula. Se não for uma letra minúscula, retornará seu valor.
A função reduzir() é usada para agregar objetos iteráveis por meio de métodos funcionais.
O formato da sintaxe é:
reduzir(função, objeto iterável[, valor inicial])
Por exemplo, sabemos que uma lista é [1,2,3,4] e precisamos encontrar a soma de todos os itens da lista multiplicados em sequência.
A função fromfunctoolsimportreduce#reduce é definida no módulo functools e precisa ser introduzida deftest(x,y):returnx*ymy_list=[1,2,3,4]print(reduce(test,my_list))
A saída é:
A primeira linha do código apresenta este método, e o módulo será explicado posteriormente. A função test() retorna dois dados para serem multiplicados e, em seguida, a lista my_list é processada por meio da função reduzir().
O processo de processamento é o seguinte:
Execute primeiro o primeiro passo, depois obtenha um resultado e multiplique-o pelo próximo e depois vá para o último dígito.
As duas primeiras dessas três funções são comumente usadas. Dominar essas três funções pode nos ajudar a resolver uma série de problemas complexos. Na próxima seção, aprenderemos sobre funções recursivas.