Já vimos nos posts anteriores o poder da iteração na linguagem de programação Python, vamos agora ver neste post como podemos personalizar as nossa iterações.

nums =[88, 73, 92, 72, 40, 38, 25, 20, 90, 72]
for n in nums:
    if n % 2 == 0:
        faz_algo(n)

def numeros_pares(stream):
    valores=[]
    for n in stream:
        if n % 2 == 0:
            valores.append(n)
    return valores

for n in numeros_pares(nums):
    faz_algo(n)

Uma forma de iteração indirecta é percorrer uma sequência de valores e entre eles escolher aqueles que nos interessam.

Neste exemplo temos uma lista de números aos quais queremos fazer_algo() com os valores pares. No primeiro exemplo percorremos a lista num ciclo for e testamos se cada valor é par e só no caso de ser par realizamos a nossa operação fazer_algo().

Uma alternativa seria escrever uma função que aceita uma sequência como argumento e produz a nova sequência que pretendemos. A função numeros_pares() faz isso. Itera sobre a lista que é enviada no argumento e devolve uma lista com os valores pares. Depois podemos usar essa lista num ciclo for para iterar directamente sobre os números pares.

Este exemplo tem um problema porque cria na realidade uma nova lista, uma lista com números pares. Veremos no próximo post como evitar isso.



A série de posts sobre ciclos em Python aproxima-se rapidamente do fim, mas continuará ainda a ser o assunto principal nos próximos posts.


Este post faz parte da série de posts sobre Ciclos e Interáveis em Python:
  1. Ciclos em Python, o básico
  2. Ciclos em Python e os Iteráveis
  3. Ciclos em Python, mais exemplos de Iteráveis
  4. Ciclos em Python, uso de Iteráveis fora dos ciclos
  5. Ciclos em Python, problemas comuns e os índices
  6. Ciclos em Python, iterar sobre duas listas
  7. Ciclos em Python, iteração personalizada (post actual)
  8. Ciclos em Python, Generators - parte 1
  9. Ciclos em Python, Generators - parte 2
  10. Ciclos em Python, Generators - parte 3
  11. Ciclos em Python, operações de baixo nível
  12. Ciclos em Python, como tornar os nossos objectos em Iteráveis
  13. Ciclos em Python, conclusão


A inspiração para este post veio daqui.