Aula 18 - Python

Python online

Python Tutorial

Standard library

Dinamica

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

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

sintaxe

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

Tipos

básicos

no python >= 3.0, inteiros são unbounded (bignums) - pode não corresponder aos inteiros de hardware

float é o double do hardware - 53 bits de precisão e 11 de expoente

compostos

mutaveis e imutáveis

Trocar o valor de uma variavel que contem um tipo básico 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 variável

x = [10, 20, 30, 40]
id(x)
x[1]
x[1] = 99
x
id(x)
x = (10, 20, 30, 40)
x[1]
x[1]= 99

Listas ( e sequencias)

x = [10, 20 , 30, 40, 50]
x[0]
x[7]
x[-2]
x[-7]

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

Abreviações:

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

Pode ter passo diferente de 1

x[1:20:3]
x[::-1] - lista revertida


Pode atribuir valor a slices, de diferentes tamanhos

``` {.example}
x[2:5] = [1,2]
x
x[2:5] = []
x

atribuição

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)
f=1+1
id(f)

Python predefine inteiros pequenos id(a) == id(f)

[:] copia a lista (copia rasa)

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

operadores, funções e metodos em lista

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]

Tuplas

sequencias como lista mas imutáveis

metodos de lista não funcionam

funções de lista funcionam.

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

pattern matching

(a,b)  = (10,"qwerty")
(a,b) = 10, "querty"
a,b = (10,"querty")
a,b = 10 , "querty"
a,b = b,a
[a,b,c] = [1,4.5, "zzz"]
[a,*b] = [1,4.5, "zzz"]

Strings

x = "qwerty"
x[2]
x[2][2]
x = 'qwerty'
'wer' in x

Dicionarios

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

qualquer tipo imutável pode ser a chave, qq tipo pode ser o valor

metodos para dicionarios

Set

sets

For

list(range(10))
list(range(2,10))
list(range(2,10,3))

for i in range(len(lista)):

list converte o objeto para listas

Exercícios