G. Jagiella | ostatnia modyfikacja: 24.10.2025 |
Przypomnienie: list (obiekt typu lst) - ciąg obiektów, podobny do krotki, ale zmienialny.
Przybliżony odpowiednik w C++: std::vector lub wręcz std::vector<std::shared_ptr<void>>.
lst = [1, 2, 3]
print(lst)
[1, 2, 3]
lst[0] = 1000
print(lst)
[1000, 2, 3]
Metoda (intuicyjnie) - funkcja przywiązana do obiektu.
lst = [1, 2, 3]
lst.append('X') # wywołanie metody append obiektu o nazwie lst
print(lst)
[1, 2, 3, 'X']
Ogólna składnia: obj.method(...) gdzie obj to obiekt, method to nazwa jego metody.
pop():
lst = [1, 2, 3]
print(lst)
[1, 2, 3]
lst.pop() # bez parametru usuwa i zwraca element z końca listy
3
print(lst)
[1, 2]
pop(i) (i - indeks):
lst = [1, 2, 3]
print(lst)
[1, 2, 3]
lst.pop(1) # jak pop(), ale usuwa element spod podanego indeksu
2
print(lst)
[1, 3]
remove(x):
lst = list("abcdeabcde")
print(lst)
lst.remove("b") # usuwa pierwsze wystąpienie elementu
print(lst)
['a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e'] ['a', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e']
index(x):
lst = [1, 2.0, [], (1,2,3), "aaa"]
lst.index(2.0) # zwraca indeks pod którym pojawia się element
1
Więcej metod list: https://docs.python.org/3/tutorial/datastructures.html#more-on-lists
Napisy nie są zmienialne, zatem żadna metoda napisu nie będzie go modyfikować (ale może zwrócić nowy napis).
s = "Jestem przykładowym napisem."
print(s.upper())
JESTEM PRZYKŁADOWYM NAPISEM.
print(s.lower()) # podobnie: s.casefold()
jestem przykładowym napisem.
print(s.count("em")) # liczba wystąpień podnapisu
2
print("Napis".isupper())
print("NAPIS".isupper())
False True
s = "Jestem przykładowym napisem."
s.split() # zwraca listę, można wybrać separator
['Jestem', 'przykładowym', 'napisem.']
print(s.startswith("Jestem "))
print(s.endswith("m."))
True True
print(s.replace("przykładowym", "niezwykle ważnym"))
print(s.replace("e", "E"))
Jestem niezwykle ważnym napisem. JEstEm przykładowym napisEm.
Dużo więcej metod: https://docs.python.org/3/library/stdtypes.html#string-methods
Metody które posiada dany obiekt zazwyczaj zależą od jego typu.
Metoda danego obiektu zazwyczaj wykonuje operację związaną z tym obiektem (np. modyfikuje go lub zwraca informację o nim).
Moduł (intuicyjnie) - paczka z kodem Pythona (zawierająca funkcje, typy, inne obiekty).
Żeby ich użyć, trzeba je zaimportować.
Przykład: math - wbudowany moduł dostarczający funkcji (i stałych) matematycznych.
Pierwszy sposób importowania: indywidualne nazwy.
from math import pi, sin, cos, exp
print(pi)
print(sin(pi / 2))
print(cos(1))
print(exp(1))
3.141592653589793 1.0 0.5403023058681398 2.718281828459045
Drugi sposób: importowanie całego modułu.
import math
Dostęp do obiektów w module ma składnię podobną do wywoływania metod obiektów:
print(math.pi)
print(math.sin(math.pi))
print(math.cos(math.pi))
3.141592653589793 1.2246467991473532e-16 -1.0
Moduł math: nie tylko analiza matematyczna. Kilka przykładów:
print(math.factorial(10)) # silnia
print(math.comb(6, 4)) # symbol Newtona: 6 po 4
print(math.gcd(15, -21)) # największy wspólny dzielnik
3628800 15 3
Odległość punktów w $\mathbb{R}^n$:
print(math.dist((0, 0), (3, 4)))
print(math.dist((1, 2, 3), (2, 3, 4)) )
5.0 1.7320508075688772
Dokumentacja: https://docs.python.org/3/library/math.html#
Python ma dużo wbudowanych modułów, np:
mathtime, datetime - reprezentacja i przetwarzanie czasu i dat.os, sys - obsługa systemu plików, poleceń systemowych.random - losowanie liczb, permutacji etc.csv, json, xml zipfile, tarfile - praca z konkretnymi formatami plików.sqlite3 - obsługa baz danych SQL.tkinter - tworzenie okienkowych interfejsó graficznych.Siła Pythona tkwi między innymi w bardzo bogatym ekosystemie dodatkowych modułów, w szczególności pakietów modułów przetwarzania i wizualizacji danych (matplotlib, plotly), oraz narzędzi ML (torch, keras, sklearn, ...).
Bardzo wiele modułów można ściągnąć za pomocą managera pip, dołączonego do typowej dystrybucji Pythona.
Instalacja modułu o (fikcyjnej) nazwie xyz z linii poleceń (cmd.exe lub terminal):
pip install xyz
Linia poleceń jest dostępna w Jupter Notebooku przez !:
!dir
A zatem można instalować moduły z samego Notebooka:
!pip install xyz
Proste rysowanie z użyciem matplotlib. Na początek instalacja:
!pip install matplotlib
Teraz import (trzeci sposób):
import matplotlib.pyplot as plt # jak `import matplotlib.pyplot`, ale importuje pod nazwą plt
Cel - narysować linię łamaną zadaną punktami:

# Jupyterowa "magia", nie zawsze potrzebna
%matplotlib inline
plt.plot([1, 3, 4, 5.5, 2], [2, 3.5, 3, 6, 7]) # parametry: ciąg współrzędnych x, ciąg współrzędnych y
plt.show() # w notatniku można pominąć
xs = [1, 3, 4, 5.5, 2]
ys = [2, 3.5, 3, 6, 7]
Bardzo dużo opcji rysowania (i upiększania):
plt.plot(xs, ys, color="red") # jeden ze sposobów przekazywania "nazwanych" parametrów funkcji
plt.show()
plt.plot(xs, ys, color="red")
plt.plot([1, 2, 3], [4, 1, 6], color="#40C0A0") # kolor html
plt.show()
Dużo innych opcji:
from matplotlib.pyplot import plot, show, legend, xlabel, ylabel, title, grid
temp_2006 = [-5.9, -2.0, 0.6, 9.7, 13.7, 18.1, 22.6, 17.3, 16.4, 11.4, 7.0, 4.2]
temp_2012 = [1.0, -4.0, 6.5, 9.1, 14.5, 17.3, 19.9, 19.5, 15.1, 8.8, 6.0, -0.9]
temp_2018 = [3.4, -1.4, 1.9, 13.9, 17.5, 19.6, 20.6, 22.0, 16.9, 11.6, 5.8, 3.2]
months = range(1, 13)
plot(months, temp_2006, marker='x', linestyle='dashdot')
plot(months, temp_2012, marker='x', linestyle='dotted')
plot(months, temp_2018, marker='x', linestyle='None')
title("Średnia dzienna temperatura we Wrocławiu")
xlabel("Miesiąc")
ylabel("Temperatura [C]")
legend([2006, 2012, 2018])
grid()
show()
lst = [i ** 2 for i in range(10)]
print(lst)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Ogólniej:
[expression for name in sequence] gdzie expression to wyrażenie, w którym może pojawiać się nazwa name.
Przydatne w rysowaniu wykresów funkcji:
xs = [2 * math.pi * i / 100 for i in range(101)]
ys = [math.sin(x) for x in xs]
plt.plot(xs, ys)
plt.show()
Uwaga. Na następnym wykładzie pojawi się jeszcze lepszy sposób reprezentacji ciągów liczb (z użyciem modułu numpy).