Ronie Uliana
Software Architect and journeyman Data Scientist
Ronie Uliana
http://slides.com/ronie/python-indolor
Ronie Uliana - Python Indolor
Você precisa fazer algo em Python e não está feliz com isso.
Posso mostrar alguns idiomas do Python
(Idioma?)
o_O
Ronie Uliana - Python Indolor
Ronie Uliana
Data Engineer
Mestrando Mackenzista
99ner
ex-VAGAS.com
Ruby, Scala, Java, C#, Racket (Scheme), Javascript (sem orgulho), Python (um pouco), R (masomenos), Rust, Haskell (bem mal), Factor (oi?)
Listas, Filas, Hashes, Sets
Ronie Uliana - Python Indolor
Muito uso!
Ronie Uliana - Python Indolor
Loop
Idiomático
letters = ["a", "b", "c", "d"]
result = []
for i in range(0, len(letters)):
result.append(letters[i].upper())
print(result)
letters = ["a", "b", "c", "d"]
result = [e.upper() for e in letters]
print(result)
letters = ["a", "b", "c", "d"]
result = map(str.upper, letters)
print(list(result))
ou isso
Ronie Uliana - Python Indolor
Loop
Idiomático
letters = ["A", "a", "B", "b"]
result = []
for i in range(0, len(letters)):
if letters[i].isupper():
result.append(letters[i])
print(result)
letters = ["A", "a", "B", "b"]
result = [e for e in letters if e.isupper]
print(result)
letters = ["A", "a", "B", "b"]
result = filter(str.isupper, letters)
print(list(result))
ou isso
Ronie Uliana - Python Indolor
letters = ["A", "a", "B", "b"]
result1 = [ e.upper() for e in letters]
result2 = { e.upper() for e in letters}
result3 = {e: e.upper() for e in letters}
print(result1)
print(result2)
print(result3)
Ronie Uliana - Python Indolor
result = {k: v for (k, v) in zip("abc", [1, 2, 3])}
print(result)
Ronie Uliana - Python Indolor
from itertools import *
def edges_of_complete_graph(vertices):
return combinations(vertices, 2)
def edges_of_directed_complete_graph(vertices):
return permutations(vertices, 2)
print(list(edges_of_complete_graph(5)))
print(list(edges_of_directed_complete_graph(5)))
Ronie Uliana - Python Indolor
from collections import *
words = ["a", "vida", "a", "lida", "da", "vida"]
bag = Counter(words)
print(bag)
print(bag.most_common(2))
common = Counter(dict(bag.most_common(2)))
print(bag - common)
Ronie Uliana - Python Indolor
words = ["um", "dois", "três", "pim"]
print(words[0])
print(words[-1])
print(words[:-1])
print(words[1:3])
print(words[::2])
Ronie Uliana - Python Indolor
Como agrupar elementos?
Como percorrer consecutivos (janela)?
Como percorrer em grupos?
Programas possuem estrutura
Duas estruturas:
PISO
DRY
Ronie Uliana - Python Indolor
,._
@"_.)~ => ()____) => (linguiça)
!!
"entra porco, sai linguiça"
Ronie Uliana - Python Indolor
Ronie Uliana - Python Indolor
from collections import Counter
from lxml import html
import requests, re, math
# Screen Scraping
page = requests.get("https://pt.wikipedia.org/wiki/Python")
tree = html.fromstring(page.content)
paragraphs = tree.cssselect("#mw-content-text > p")
paragraphs = [e.text_content() for e in paragraphs]
text = " ".join(paragraphs)
# Token and stopwords
words = re.findall(r"\w+", text)
tokens = Counter(words)
print(tokens.most_common(10))
stopwords = Counter({"de": math.inf, "a": math.inf, "o": math.inf})
tokens = tokens - stopwords
print(tokens.most_common(10))
pip install cssselect
,._
@"_.)~
!!
,._ ,._ ,._ @"_.)~ + @"_.)~ = @"_.)~ x2 !! !! !!
Ronie Uliana - Python Indolor
Ronie Uliana - Python Indolor
from itertools import *
vertices = ["a", "b", "c", "d"]
complete = combinations(vertices, 2)
complete = map(sorted, complete)
complete = map(tuple, complete)
complete = set(complete)
print(complete)
my_graph = [("c", "d"), ("b", "d")]
my_graph = map(sorted, my_graph)
my_graph = map(tuple, my_graph)
my_graph = set(my_graph)
complement = complete - my_graph
print(complement)
my_graph
complete
complement
Ronie Uliana - Python Indolor
from itertools import *
vertices = ["a", "b", "c", "d"]
complete = combinations(vertices, 2)
complete = map(sorted, complete)
complete = map(tuple, complete)
complete = set(complete)
print(complete)
my_graph = [("c", "d"), ("b", "d")]
my_graph = map(sorted, my_graph)
my_graph = map(tuple, my_graph)
my_graph = set(my_graph)
complement = complete - my_graph
print(complement)
,._ @"_.)~ !! + ,._ @"_.)~ !!
Ronie Uliana - Python Indolor
from itertools import *
def to_graph(edges):
edges = map(sorted, edges)
edges = map(tuple, edges)
return set(edges)
vertices = ["a", "b", "c", "d"]
complete = to_graph(combinations(vertices, 2))
my_graph = to_graph([("c", "d"), ("b", "d")])
complement = complete - my_graph
print(complement)
,._ @"_.)~ x2 !!
Recuperar 2 páginas da Wikipedia e ver quais são os termos em comum.
Ronie Uliana - Python Indolor
Quantas linhas?
Ronie Uliana - Python Indolor
from collections import Counter
from lxml import html
import requests, re, math
stopwords = Counter({e: math.inf for e in ["de", "da", "do", "e"]})
def wikipedia_pt(name):
page = requests.get("https://pt.wikipedia.org/wiki/" + name)
tree = html.fromstring(page.content)
paragraphs = tree.cssselect("#mw-content-text > p")
paragraphs = [e.text_content() for e in paragraphs]
return " ".join(paragraphs)
def to_bag(text):
words = re.findall(r"\w+", text)
return Counter(words)
def wiki2bag(name):
return to_bag(wikipedia_pt(name)) - stopwords
python = wiki2bag("Python")
ruby = wiki2bag("Ruby_(linguagem_de_programação)")
print(python & ruby)
Perguntas?
Ronie Uliana - Python Indolor
By Ronie Uliana
Você precisa fazer algo em Python e não está feliz com isso? Talvez essas pequenas coisas ajudem.