Antes de prosseguir leia os artigos anteriores aqui.
Olá pessoal!
Dando continuidade ao estudo da estrutura for vamos ver uma função muito utilizada em cojuto com o for: a função range
Como brinde, devido a uma dúvida postada nos comentários, vamos ver como fazer combinações em Python.
A função range
Muitas vezes, junto com o for, é necessário criar uma lista de valores, para isso utilizamos a função range. A função range, gera um lista de valores de acordo com os argumentos passados para ela. Segue um exemplo básico:
Ao especificar somente um valor, a função range retorna uma lista de número. Diferente do que imaginamos, ela não retorna uma lista até o número especificado (nesse caso, de 0 a 10) mas sim um intervalo que se inicia no zero e termina no número inteiro que antecede o número especificado. na notação matemática para intervalos, a função range do exemplo anterior criaria o seguinte intervalo: [0,10). Isto é, um intervalo fechado à esquerda e aberto à direita.Código:>>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
É possível alterar o início do intervalo, basta adicionar mais uma argumento. Mesmo alterando o início, o intervalo gerado pelo range sempre será fechado à direita e aberto à esquerda. Um pequeno exemplo:
Também é possível especificar o "passo" do intervalo, ou seja o valor de incremento:Código:>>> range(1,10) [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(5,10) [5, 6, 7, 8, 9] >>> range(-5,10) [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>>
No exemplo acima, utilizamos um incremento de 2, desta forma "pulamos" de 2 em 2.Código:>>> range(-6,6,2) [-6, -4, -2, 0, 2, 4] >>>
O nosso colega Jockerman pediu uma ajuda para re-escrever o seguinte código C em Python:
Esse trecho de código é utilizado para gerar pares de numeros não repetidos. Um trecho da execusão desse código em C:Código:#include <stdio.h> #include <stdlib.h> main(){ int x,y; for(x=1; x<=10;x++){ for(y=x+1;y<=10;++y){ printf(\"%d, %d\n\", x,y); } } }
Vamos reescrever esse código para Python...Código:1, 2 1, 3 1, 4 1, 5 1, 6 1, 7 1, 8 1, 9 1, 10 2, 3 2, 4 2, 5 2, 6 2, 7
Podemos ver que a unica diferença entre os códigos é a ausência de declaração de variáveis, a necessidade da função range (que faz o papel de x=1; x<=10;x++) e que no range temos que especificar o final como 11. Segue um trecho da saída gerada pela execução desse código:Código:for x in range(1,11): for y in range(x+1,11): print '%i, %i'%(x,y)
Mas o mais legal de tudo é a facilidade que o Python provê aos seus programadores. Esse problema citado pelo nosso colega, é uma combinação simples de 2 em 2. Então, porque perder tempo pensando em como fazer esses fors? Gaste sua massa cinzenta em outros problemas, use a biblioteca padrão do Python:Código:1, 2 1, 3 1, 4 1, 5 1, 6 1, 7 1, 8 1, 9 1, 10 2, 3 2, 4 2, 5 2, 6 2, 7
Segue a saída completa gerada pela execução desse código:Código:from itertools import combinations for x,y in combinations(range(1,11), 2): print '%i, %i'%(x,y)
Código:1, 2 1, 3 1, 4 1, 5 1, 6 1, 7 1, 8 1, 9 1, 10 2, 3 2, 4 2, 5 2, 6 2, 7 2, 8 2, 9 2, 10 3, 4 3, 5 3, 6 3, 7 3, 8 3, 9 3, 10 4, 5 4, 6 4, 7 4, 8 4, 9 4, 10 5, 6 5, 7 5, 8 5, 9 5, 10 6, 7 6, 8 6, 9 6, 10 7, 8 7, 9 7, 10 8, 9 8, 10 9, 10
[Curso de Python] A função range
26 de Fevereiro de 2010, 0:00 - sem comentários ainda | Ninguém está seguindo este artigo ainda.
Visualizado 269 vezes
0sem comentários ainda