import timeit
import numpy as np
from math import atan2
from math import sqrt
from math import pi
from random import sample
print(timeit.timeit('a=list(range(1, 101)) ', number=1000))
0.0008733000000020752
print(timeit.timeit('b=tuple(range(1, 101)) ', number=1000))
0.0006315999999984001
print(timeit.timeit('c=set(range(1, 101)) ', number=1000))
0.0011263999999968632
# se quiser fazer primeiro uma coisa e depois uma conversao:
time = timeit.timeit(setup='x= [i for i in range(1,101)]', stmt='y= tuple(x)', number=1000)
print('tuple:', time)
tuple: 0.0001791000000039844
time1 = timeit.timeit('''dicion = dict()
for i in range(1, 101):
dicion[i] = i''', number=1000)
print('dicionario:', time1)
dicionario: 0.00838629999999796
a = [1, 2, 3, 4]
b = np.array([2, 4, 6, 8])
c = np.array([[1, 2, 3], [4, 7, 1], [7, 6, 2], [0, 4, 3]])
print(a*5)
[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
print(b*5)
[10 20 30 40]
print(c*5)
[[ 5 10 15] [20 35 5] [35 30 10] [ 0 20 15]]
print(a+a)
[1, 2, 3, 4, 1, 2, 3, 4]
print(b+b)
[ 4 8 12 16]
print(a+b)
[ 3 6 9 12]
def lista_simples(a):
return a*5
def lista_de_listas(a):
return [lista_simples(a)]*5
elem1 = (1, 2)
conj = set(elem1)
# nao se podem ter listas num conjunto set logo a segunda parte do exo n da
conj1 = {frozenset({1, 2}), frozenset({3, 6})}
# converter
def converter(x, y):
assert x > 0
r = sqrt(x**2 + y**2)
t = atan2(y, x)
return r, t
# elementos comuns
def t_intersect(x, y):
x = set(x)
y = set(y)
return x & y
# remover duplicados
def remove_dupls(x, y):
new = []
for i in x:
if i not in y:
new.append(i)
for i in y:
if i not in x:
new.append(i)
return sorted(new)
# sem comprehension
def lista_divisao(x):
new = []
for i in x:
if i[1] != 0:
if i[0]/i[1] >= 1:
new.append(i[0]/i[1])
return new
# com comprehension
a5 = [(82, 40), (23, 4), (12, 3), (15, 3), (1, 2)]
lista_res_div = [i[0]/i[1] for i in a5 if i[1] != 0 and i[0]/i[1] >= 1]
# triplos
lst1 = [1, 5, 2, 3]
lst2 = [20, 56, 10, 22]
# comprehension
lst_triplos = [(lst1[i], lst2[i]) for i in range(0, len(lst1))]
# maneira1
def triplos(x, y):
new = []
for i in range(0, len(x)):
new.append((x[i], y[i]))
return new
re = np.array([[1, 2, 3], [6, 4, 2], [3, 3, 3]])
print(re.transpose())
[[1 6 3] [2 4 3] [3 2 3]]
def ret_elem_wrong(c, n):
c = set(c)
a = sample(c, n)
for i in a:
c.remove(i)
return c
# exercicio9
def prob(k, n):
ina = (n-k+1)/n
mid = 0
i = 1
while i <= k-1:
mid += pi*(1/(n-i))
i += 1
return ina*mid
def generator():
conj = set(sample(range(0, 10), 2))
yield conj
for value in generator():
print(value)
def ret_elem(c, n):
return tuple(sample(c, n))
def ciclinho(d):
f = open('mediaciclos.txt', 'w')
f.close()
c = 0
while c < 10000:
soma = 0
for i in range(0, 100):
a = ret_elem(d, 3)
if a[0] == a[1]-1 and a[1] == a[2]-1:
soma += 1
f = open('mediaciclos.txt', 'a')
f.write(str(soma/100)+'\n')
c += 100
return
{1, 6}
# A
def inversa():
n = int(input('Introduza a ordem da matriz:'))
m = np.zeros([n, 2*n])
print('Introduza os números de cada linha e coluna:')
for i in range(n):
for j in range(n):
m[i][j] = float(input('m['+str(i)+']['+str(j)+']'))
# por 1s na matriz inversa
for i in range(n):
for j in range(n):
if i == j:
m[i][j+n] = 1
# gauss-jordan
for i in range(n):
if m[i][i] == 0:
raise ValueError('Divisão por zero')
for j in range(n):
if i != j:
ratio = m[j][i]/m[i][i]
for k in range(2*n):
m[j][k] = m[j][k] - (ratio * m[i][k])
# dividir para fcr 1 na diagonal
for i in range(n):
divisor = m[i][i]
for j in range(2*n):
m[i][j] = m[i][j] / divisor
inv = m[:, 2:]
return inv
# B
def resolver_sistemas_equacoes(b):
b = np.array(b)
c = inversa()
return np.dot(c, b)