Rodrigo Strauss :: Blog
Tutorial informal de Python, parte 3
>>> # Nessa terceira parte do nosso tutorial vamos ver como fazer funções >>> # e conhecer alguns tipos de dados que fazem do Python o que ele é >>> >>> # As funções são definidas usando-se a palavra chave def: >>> def potencia(n, exp): ... ret = 1 ... for x in range(exp): ... ret *= n ... return ret ... >>> potencia <function potencia at 0x012DCB70> >>> potencia(2, 2) 4 >>> potencia(2,10) 1024 >>> potencia(2,50) 1125899906842624L >>> potencia(2,100) 1267650600228229401496703205376L >>> potencia(2,0) 1 >>> f = potencia >>> f <function potencia at 0x012DCB70> >>> f() Traceback (most recent call last): File "<interactive input>", line 1, in <module> TypeError: potencia() takes exactly 2 arguments (0 given) >>> f(3,10) 59049 >>> # Já vimos funções, agora vamos aos tipos de dados. >>> # Primeiro a tupla, que é um agrupamento de variáveis, >>> # funciona de forma parecida com um array: >>> t = (1,2,3,4,5,6,7,8,9) >>> t (1, 2, 3, 4, 5, 6, 7, 8, 9) >>> t[0] 1 >>> t[9] Traceback (most recent call last): File "<interactive input>", line 1, in <module> IndexError: tuple index out of range >>> # ooops >>> t[8] 9 >>> # Os recursos de índice negativo e de slicing que funcionam >>> # com o tipo string também funcionam com tuplas, assim como >>> # com qualquer tipo que siga o conceito "sequence" >>> t[-1] 9 >>> t[len(t)/2:] (5, 6, 7, 8, 9) >>> # outro recurso interessante das tuplas é o "desempacotamento automático": >>> t = (1,2,3) >>> t (1, 2, 3) >>> a,b,c = t >>> a 1 >>> b 2 >>> c 3 >>> >>> # Agora vamos ao list, que funciona de forma parecida com a tupla >>> l = [1,2,3,4,5,6,7,8] >>> l [1, 2, 3, 4, 5, 6, 7, 8] >>> type(t) <type 'tuple'> >>> type(l) <type 'list'> >>> # Note a diferença na declaração, tuplas com () e listas com [] >>> # Como o parênteses é também usado para agrupar expressões, uma >>> # sintaxe especial é necessária para tuplas com 1 elemento: >>> type([1]) <type 'list'> >>> type((1)) <type 'int'> >>> type((1,)) <type 'tuple'> >>> # Você já deve ter reparado que o "for" no Python é equivalente >>> # ao "foreach" de outras linguagens: >>> for x in [0,1,2,3]: ... print x ... 0 1 2 3 >>> # Para reporduzir o comportamento do "for" com contador numérico >>> # usamos a função range, que gera uma lista com os números a serem >>> # percorridos: >>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> for x in range(10): ... print x, ... 0 1 2 3 4 5 6 7 8 9 >>> # Antes que você pergunte, a mágica de fazer o print exibir os >>> # números todos na mesma linha foi feita colocando uma vírgula >>> # no fim da linha do print >>> >>> # A diferença entre a tupla e a lista é que a tupla é imutável. >>> t (1, 2, 3, 4, 5, 6, 7, 8, 9) >>> t[2] = 10 Traceback (most recent call last): File "<interactive input>", line 1, in <module> TypeError: 'tuple' object does not support item assignment >>> l[2] = 20 >>> l [1, 2, 20, 4, 5, 6, 7, 8] >>> # Além disso, a lista pode ser usada como array, como fila e >>> # como pilha >>> l = [] >>> l [] >>> l.append(5) >>> l.append(10) >>> l [5, 10] >>> del l[0] >>> l [10] >>> l = [] # vamos usar uma lista como pilha >>> l.append(1) >>> l.append(2) >>> l.append(3) >>> l [1, 2, 3] >>> l.pop() 3 >>> l.pop() 2 >>> l.pop() 1 >>> l.pop() Traceback (most recent call last): File "<interactive input>", line 1, in <module> IndexError: pop from empty list >>> l [] >>> range(10, 20, 2) # inicio (inclusive), fim (exclusive), passo [10, 12, 14, 16, 18] >>> l = range(10, 20, 2) >>> l [10, 12, 14, 16, 18] >>> l.index(12) #procura um item e retorna qual seu índice 1 >>> del l[l.index(12)] # removendo o item >>> l [10, 14, 16, 18] >>> t (1, 2, 3, 4, 5, 6, 7, 8, 9) >>> l.extend(t) # extendendo a lista com outra sequência (lista ou tupla) >>> l [10, 14, 16, 18, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> l = [] >>> l.append(1) >>> l.append(2) >>> l.append(3) >>> l [1, 2, 3] >>> l.pop(0) # dessa forma eu retiro o primeiro item da lista. Agora eu tenho uma fila 1 >>> l.pop(0) 2 >>> l.pop(0) 3 >>> l.pop(0) Traceback (most recent call last): File "<interactive input>", line 1, in <module> IndexError: pop from empty list >>> l [] >>> l = range(10) >>> l [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> l.reverse() >>> l [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] >>> l.sort() >>> l [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> l.sort(reverse=True) >>> l [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] >>>
Em 23/08/2007 22:42, por Rodrigo Strauss




