Porque python não precisa de tanto laço for

Estava relendo trechos do livro "mergulhando no python" em um dos muitos comentários interessantes do autor, ele diz:

"A maioria das linguagens não tem um tipo de dados poderoso para listas, como tem o python, então você acaba fazendo muito trabalho manual, especificando um início, um meio, um fim e um valor de incremento para definir uma faixa de números inteiros, caracteres ou outras entidades sobre as quais se pode iterar. Mas, em python, um loop for simplesmente itera sobre uma lista da mesma maneira como as compreensões de lisa funcionam."

Na prática...

from sys import path
print "\n".join(path)

Em outras linguagens imprimir o path leva fatalmente a um laço for.

No código acima a quebra de linha "\n" é uma string, e como tal automaticamente herda vários métodos da classe "str", mãe de todas as strings, esta por sua vez tem entre seus métodos o "join" que junta uma lista que lhe é fornecida. É por isso que se pode, em Python somar os cem primeiros números de forma trivial:

sum(xrange(1,101))

OU seja somar os cem primeiros números sem usar um laço for. Xrange gera a lista dos cem primeiros números e sum termina o trabalho. Como Xrange retorna uma lista, e todos os tipos de dados do python já trazem de brinde "iteradores", é como se eles já saissem de fábrica com um laço for, você, digamos assim, usa um for emcapsulado.

A lição que fica é que se você quer estudar Python deve ler muito sobre a linguagem para não tentar complicar, já que muitos de nós adquirimos "vícios" de outras linguagens :).

Resolvi colocar mais uma pérola:

print "\n".join(lista[::-1])

lista[::-1] --> imprime lista inversa

Há também a opção dentro do for reversed(iteravel)

Um comentário:

Insira seu comentário - O mesmo será submetido à aprovação!

linux-cookbook

Grupos do Google
Participe do grupo linux-cookbook
E-mail:
Visitar este grupo