Commit 164e1de4 by Patryk Czarnik

Dopiski do gen_iter

parent f0883adc
...@@ -14,7 +14,7 @@ def pomiar_czasu(f): ...@@ -14,7 +14,7 @@ def pomiar_czasu(f):
@pomiar_czasu @pomiar_czasu
def petla(n): def petla(n):
suma = 0 suma = 0
for i in range(n): for i in range(1, n+1):
suma += i suma += i
return suma return suma
......
...@@ -7,13 +7,14 @@ def pozegnaj(): ...@@ -7,13 +7,14 @@ def pozegnaj():
print('Początek programu') print('Początek programu')
powitaj() powitaj()
print('\n---- badanie zmiennej f--')
# Funkcję można wpisać do zmiennej # Funkcję można wpisać do zmiennej
f = powitaj f = powitaj
# Teraz w zmiennej f mamy funkcję i możemy ją wywołać # Teraz w zmiennej f mamy funkcję i możemy ją wywołać
f() f()
f = pozegnaj f = pozegnaj
f() f()
print() print('--------\n')
# Funkcja może być elementem kolekcji (lista, słownik...) # Funkcja może być elementem kolekcji (lista, słownik...)
......
...@@ -5,7 +5,6 @@ print(liczby) ...@@ -5,7 +5,6 @@ print(liczby)
# Aby wypisać tylko liczby spełniające warunek, np. tylko podzielne przez 2, # Aby wypisać tylko liczby spełniające warunek, np. tylko podzielne przez 2,
# można: # można:
for liczba in liczby: for liczba in liczby:
if liczba % 2 == 0: if liczba % 2 == 0:
print(liczba, end=' ') print(liczba, end=' ')
...@@ -65,8 +64,29 @@ print(parzyste_kwadraty) ...@@ -65,8 +64,29 @@ print(parzyste_kwadraty)
pk2 = list(map(lambda x: x**2, filter(lambda x: x % 2 ==0, liczby))) pk2 = list(map(lambda x: x**2, filter(lambda x: x % 2 ==0, liczby)))
print(pk2) print(pk2)
print()
# Operacja reduce realizuje schemat agregacji danych - z sekwencji wielu wartości tworzy pojedynczy wynik
# Przykład: suma elementów listy
# za pomocą pętli
suma = 0
for x in liczby:
suma += x
print(suma)
from functools import reduce
suma2 = reduce(lambda x, y: x+y, liczby, 0)
print(suma2)
mul = lambda x,y: x*y
silnia = lambda n: reduce(mul, range(1, n+1), 1)
print(silnia(0))
print(silnia(1))
print(silnia(5))
print(silnia(100))
print()
# To staje się łądniejsze w zapisie, gdy mamy funkcję, której chcemy użyć # To staje się ładniejsze w zapisie, gdy mamy funkcję, której chcemy użyć
def jest_parzysta(liczba): def jest_parzysta(liczba):
return liczba % 2 == 0 return liczba % 2 == 0
......
from employees import read_csv
emps = read_csv('emps.csv')
for emp in emps:
print(emp)
from collections import defaultdict
from employees import read_csv
emps = read_csv('emps.csv')
slownik = defaultdict(lambda: [0, 0])
for emp in emps:
slownik[emp.job_title][0] += 1
slownik[emp.job_title][1] += emp.salary
print(slownik)
print()
for job, (ilosc, suma) in slownik.items():
srednia = suma / ilosc
print(f'| {job:32} | {ilosc:2} | {srednia:8.2f} |')
from collections import namedtuple
nazwy_kolumn = ('employee_id', 'first_name', 'last_name', 'job_title', 'salary', 'hire_date',
'department_name', 'address', 'postal_code', 'city', 'country')
Employee = namedtuple('Employee', nazwy_kolumn)
# Funkcja zwraca generator, za pomocą którego można czytać wszystkie rekordy z pliku,
# ale nie są one na raz wczytywane do pamięci, więc pliki mogą być bardzo duże.
def read_csv(path):
with open(path, mode='r', encoding='utf-8') as file:
file.readline()
for line in file:
t = line.strip().split(';')
yield Employee(int(t[0]), t[1], t[2], t[3], int(t[4]), *t[5:])
...@@ -7,6 +7,7 @@ def abc(): ...@@ -7,6 +7,7 @@ def abc():
yield 'Celina' yield 'Celina'
print(abc)
generator = abc() generator = abc()
print(generator) print(generator)
# Generator jest iterowalny i najczęściej korzysta z niego porzez pętlę for # Generator jest iterowalny i najczęściej korzysta z niego porzez pętlę for
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment