Basic Python
Conceitos Básicos de Python
Informações Úteis
list(xrange()) == range() --> No python3, range é o xrange do python2 (não é uma lista, mas um gerador) A diferença entre uma Tupla e uma Lista é que a posição de um valor em uma tupla lhe dá significado, mas as listas são apenas valores ordenados. As tuplas têm estruturas, mas as listas têm uma ordem.
Principais operações
Para elevar um número você usa: 3**2 (não 3^2) Se você fizer 2/3, ele retorna 1 porque está dividindo dois inteiros (int). Se você deseja decimais, deve dividir floats (2.0/3.0). i >= j i <= j i == j i != j a and b a or b not a float(a) int(a) str(d) ord("A") = 65 chr(65) = 'A' hex(100) = '0x64' hex(100)[2:] = '64' isinstance(1, int) = True "a b".split(" ") = ['a', 'b'] " ".join(['a', 'b']) = "a b" "abcdef".startswith("ab") = True "abcdef".contains("abc") = True "abc\n".strip() = "abc" "apbc".replace("p","") = "abc" dir(str) = Lista de todos os métodos disponíveis help(str) = Definição da classe str "a".upper() = "A" "A".lower() = "a" "abc".capitalize() = "Abc" sum([1,2,3]) = 6 sorted([1,43,5,3,21,4])
Juntar caracteres 3 * ’a’ = ‘aaa’ ‘a’ + ‘b’ = ‘ab’ ‘a’ + str(3) = ‘a3’ [1,2,3]+[4,5]=[1,2,3,4,5]
Partes de uma lista ‘abc’[0] = ‘a’ 'abc’[-1] = ‘c’ 'abc’[1:3] = ‘bc’ de [1] a [2] "qwertyuiop"[:-1] = 'qwertyuio'
Comentários # Comentário de uma linha """ Comentário de várias linhas Outro """
Laços
Tuplas
t1 = (1, '2', 'três') t2 = (5, 6) t3 = t1 + t2 = (1, '2', 'três', 5, 6) (4,) = Singleton d = () tupla vazia d += (4,) --> Adicionando em uma tupla NÃO PODE! --> t1[1] == 'Novo valor' list(t2) = [5, 6] --> De tupla para lista
Lista (array)
d = [] vazio a = [1, 2, 3] b = [4, 5] a + b = [1, 2, 3, 4, 5] b.append(6) = [4, 5, 6] tuple(a) = (1, 2, 3) --> De lista para tupla
Dicionário
d = {} vazio monthNumbers={1:'Jan', 2: 'fev','fev':2}--> monthNumbers ->{1:'Jan', 2: 'fev','fev':2} monthNumbers[1] = 'Jan' monthNumbers['fev'] = 2 list(monthNumbers) = [1, 2, 'fev'] monthNumbers.values() = ['Jan', 'fev', 2] keys = [k for k in monthNumbers] a={'9':9} monthNumbers.update(a) = {'9':9, 1:'Jan', 2: 'fev','fev':2} mN = monthNumbers.copy() #Cópia independente monthNumbers.get('chave',0) #Verifica se a chave existe, Retorna o valor de monthNumbers["chave"] ou 0 se não existir
Conjunto
Nos conjuntos não há repetições myset = set(['a', 'b']) = {'a', 'b'} myset.add('c') = {'a', 'b', 'c'} myset.add('a') = {'a', 'b', 'c'} #Sem repetições myset.update([1, 2, 3]) = set(['a', 1, 2, 'b', 'c', 3]) myset.discard(10) #Se presente, remove, se não, nada myset.remove(10) #Se presente, remove, se não, gera exceção myset2 = set([1, 2, 3, 4]) myset.union(myset2) #Valores em myset OU myset2 myset.intersection(myset2) #Valores em myset E myset2 myset.difference(myset2) #Valores em myset mas não em myset2 myset.symmetric_difference(myset2) #Valores que não estão em myset E myset2 (não em ambos) myset.pop() #Obtém o primeiro elemento do conjunto e remove myset.intersection_update(myset2) #myset = Elementos em ambos myset e myset2 myset.difference_update(myset2) #myset = Elementos em myset mas não em myset2 myset.symmetric_difference_update(myset2) #myset = Elementos que não estão em ambos
Classes
O método em __It__ será o utilizado pelo sort para comparar se um objeto desta classe é maior que outro
map, zip, filter, lambda, sorted e one-liners
Map é como: [f(x) for x in iterable] --> map(tutple,[a,b]) = [(1,2,3),(4,5)] m = map(lambda x: x % 3 == 0, [1, 2, 3, 4, 5, 6, 7, 8, 9]) --> [False, False, True, False, False, True, False, False, True]
zip para quando o mais curto entre foo ou bar para:
Lambda é usado para definir uma função (lambda x,y: x+y)(5,3) = 8 --> Use lambda como uma função simples sorted(range(-5,6), key=lambda x: x** 2) = [0, -1, 1, -2, 2, -3, 3, -4, 4, -5, 5] --> Use lambda para ordenar uma lista m = filter(lambda x: x % 3 == 0, [1, 2, 3, 4, 5, 6, 7, 8, 9]) = [3, 6, 9] --> Use lambda para filtrar reduce (lambda x,y: x*y, [1,2,3,4]) = 24
Assert()
Se a condição for falsa, a string será impressa na tela
Geradores, yield
Um gerador, ao invés de retornar algo, "cede" algo. Quando você o acessa, ele irá "retornar" o primeiro valor gerado e, em seguida, você pode acessá-lo novamente e ele irá retornar o próximo valor gerado. Portanto, todos os valores não são gerados ao mesmo tempo e muita memória pode ser economizada usando isso em vez de uma lista com todos os valores.
Se você executar, verá algo como o seguinte:
Last updated