Aula 17 - Python

Python online

Python Tutorial

Standard library

1 Dinamica

Variaveis não precisam ser declaradas e não tem tipos

x = 90
x = "qwerty"
x = [3,4,56]

2 sintaxe

Brancos e mudança de linha como separador de comandos e indicador de blocos (como o haskel)

3 Tipos

3.1 basicos

  • int
  • float
  • complex
  • bool

3.2 "compostos"

  • lista [2, 3, "abc", [], 6.7]
  • string "querty" ou 'querty'
  • tupla (1,"abc", 2)
  • dicionario { "abc":4, "de":9, "aav": -3}
  • set
  • frozenset

3.3 mutaveis e imutaveis

  • tipos basicos sao imutaveis

Trocar o valor de uma variavel que contem um tipo basico significa criar um novo valor e apontar a variável para esse novo valor.

x=5
id(x)
x=x+1
id(x)

id retorna o valor do apontador de uma variavel

  • listas são mutaveis - modificar um valor mutavel mantem o mesmo apontados
x = [10, 20, 30, 40]
id(x)
x[1]
x[1] = 99
x
id(x)
  • String e tuplas são imutaveis - operações que modificariam essas sequencias não funcionam
x = (10, 20, 30, 40)
x[1]
x[1]= 99
  • dicionarios e conjuntos (set) mutaveis, frozensets sao imutaveis.

4 Listas ( e sequencias)

  • indexação começando em 0
  • indices não podem passar do fim
  • indices negativos - do fim para o comeco
x = [10, 20 , 30, 40, 50]
x[0]
x[7]
x[-2]
x[-7]

4.1 slices

subsequencias de listas

x = [10,11,12,13,14,15,16,17,18]
x[2:5]

elementos nas posicoes 2 até antes do 5

Abreviacoes:

x[:3] => x[0:3]
x[3:] => x[3:final]

Pode atribuir valor a slices, de diferentes tamanhos

x[2:5] = [1,2]
x
x[2:5] = []
x

4.2 atribuicao

x=[1,2,3]
id(x)
y=x
id(y)
z=x[:]
id(z)

atribuição apenas faz a variável apontar para o valor velho. Isso é sempre verdade - para qualquer variável - mas para tipos imutaveis isso não é um problema.

a=2
b=a
id(a)
id(b)
b=b+1
a
id(b)

[:] copia a lista (copia rasa)

a= [1,[2,3],4]
b=a[:]
b[0]=9
b
a
b[1][0]=99
b
a

4.3 operadores, funcoes e metodos em lista

  • len(l) tamanho
  • l.append(v) insere v no final de l
  • x in l - True se x aparece na lista
  • x not in l
  • l1 + l2 - append
  • 5 * [1,2,3] = [1,2,3,1,2,3,1,2,3]
  • lista1 < lista2 - ordem lexicografica
  • lista2 == lista2
  • max(l) - maior valor em l
  • l.sort - modifica l
  • sorted(l) - retorna nova lista
  • outros metodos
  • del x[1] - remove - é um operador e nao uma funçao (sem parenteses) ou metodos (sem ponto).

5 List comprehensions

como no Haskel mas com uma sintaxe diferente

[f(x) for x in fonte if condicao]

[x**2 for x in [2,3,4,5,6,7] if x % 2 == 0]

6 Tuplas

sequencias como lista mas imutaveis

metodos de lista não funcionam

funcoes de lista funcionam.

x = (1,2,3,4,5)
x[1]
x[3:]
max(x)

6.1 pattern matching

  • funciona para tuplas
(a,b)  = (10,"qwerty")
  • em atribuicoes, valores separados por "," em atribuicoes sao implicitamente tuplas
(a,b) = 10, "querty"
a,b = (10,"querty")
a,b = 10 , "querty"
a,b = b,a
  • para listas *var é para o resto da lista
[a,b,c] = [1,4.5, "zzz"]
[a,*b] = [1,4.5, "zzz"]

7 Strings

  • sequencia
  • ente " ou '
  • imutaveis
  • caracteres Unicode,
  • sintaticamente, não existe o tipo caracter
x = "qwerty"
x[2]
x[2][2]
  • in testa por substrings
x = 'qwerty'
'wer' in x
  • s.split() - words do haskell mas permite outros separadores
  • s.splitlines() - lines do haskell
  • outros metodos para strings e mais outros

8 Dicionarios

x = { 'asd': 56, 'qwerty': -8, 'zxcv': 3}
x['qwerty']
x['zzz']
x['qwerty'] = 9
'zzz' in x

metodos para dicionarios

9 Set

10 For

  • o comando for passeia pelos elementos de uma sequencia (no futuro

veremos sao os elementos de um iterator).

  • para listas,tuplas, strings, e sets sao seus elementos
  • para dicionarios sao as chaves
  • para gerar numeros no for: range
list(range(10))
list(range(2,10))
list(range(2,10,3))

for i in range(len(lista)):

list converte o objeto para listas

11 Exercicios

  • criar uma lista com apenas os valores pares de outra lista
  • criar uma lista com os valores nas posicoes pares
  • criar um dicionario com a contagem de cada elemento numa lista
  • qual é a chave associada ao maior valor num dicionario
  • qual o elemento mais comum numa lista
  • uma lista é sublista de outra?
  • dado 2 strings o fim de um é igual ao comeco do outro?