Um iterável é um objecto que providencia um fluxo (stream) de dados. Qualquer iterável pode ser usado num ciclo for.

Existem muitos tipos de objectos iteráveis na linguagem de programação Python:


Alguns exemplos.

Listas -> elementos:
for e in ['a', 'b', 'c']:
    print e
a
b
c


Strings -> caracteres:
for c in 'String':
    print c
S
t
r
i
n
g


Dicionários -> chaves:
dicionario = {'a':1, 'b':2, 'c': 3}
for k in dicionario:
    print k
a
c
b



De reparar que iterar sobre um objecto não significa que esse objecto possa ser indexado. Por exemplo não se pode indexar um dicionário, não é possível fazer dicionario[0], logo usar um índice (ver os exemplos 1 e 2 do post Ciclos em Python, o basico) para aceder aos elementos de um iterável pode não ser uma boa ideia.

A iteração apenas sabe como obter o próximo valor, não sendo possível obter o primeiro, o último ou o valor de determinada posição.

Ficheiros -> linhas:
with open("file.txt") as f:
    for line in f:
        print repr(line)
'Gosto muito\n'
'deste blogue.\n'



Um ficheiro é um iterável cujos valores são strings (uma por cada linha), o que é muito conveniente pois é assim que os ficheiros são consumidos.


Em breve publicarei mais posts sobre esta temática.


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 (post actual)
  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
  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.