In [1]:
import this
W Pythonie typ posiadają wartości, a nie zmienne, tak więc Python jest językiem z typami dynamicznymi.
Wszystkie wartości przekazywane są przez referencję.
Dla typów numerycznych zdefiniowana jest automatyczna konwersja, tak więc możliwe jest np. mnożenie liczby zespolonej przez liczbę całkowitą typu long
bez rzutowania.
In [2]:
print("Spróbujmy sami!")
In [ ]:
bool
typ logiczny
True, Falseint
liczba całkowita
1, 13float
liczba zmiennoprzecinkowa
3.1415complex
liczba zespolona
1 + 3jstr
napis (niezmienny)list
lista (zmienna zawartość i długość)
[2, "Ala", -12.32]tuple
krotka (niezmienna)
(2, "Ala", -12.32)set
zbiór (zmienny)
set([2, "Ala", -12.32])dict
słownik (tablica asocjacyjna) (zmienny)
{1: "jeden", "dwa": 2}type(None)
odpowiednik null
None
In [1]:
type(1)
Out[1]:
Liczba całkowita int
, w Python 3 może być dowolnie duża.
In [ ]:
In [ ]:
W Pythonie liblioteki zewnętrzne są zorganizowane w modułach. Polecenie np.:
import numpy
wczytuje moduł numpy i udostępnia wszystkie jego objekty w przestrzeni nazw numpy.
Można zmienić to na przykład skracając do np
:
import numpy as np
Możemy też zaimportować do bieżącej przestrzeni nazw pojedyńcze funkcje z danego modułu:
from numpy import sin,cos
albo nawet wszystkie:
from numpy import *
Więcej szczegółów: https://docs.python.org/3.5/tutorial/modules.html
In [7]:
import numpy as np
from numpy import sin,cos
print( sin(2.0))
print( sin(np.array([1,2,3,4])))
In [8]:
from math import sin
In [ ]:
dir()
In [ ]:
from math import *
dir()
In [15]:
atan2?
a poniższa komenda jest buildin
-em pythonowym:
In [ ]:
help(atan2)
In [ ]:
Kilka funkcji, które są przydatne do pracy z listami.
In [10]:
l = [1,2,3,4]
l
Out[10]:
In [11]:
l[4]
In [12]:
print (l[0:3])
print (l[3])
In [13]:
l = [1,2,33,4]
In [15]:
for el in l:
Ponieważ możemy automatycznie wygenerować listę liczb całkowitych z dowolnym krokiem (zob. help(range)
):
In [16]:
range(10)
Out[16]:
to można w następujący sposób tworzyć pętle znane z C, Fortranu itp.:
In [18]:
for el in range(10,20,2):
print (el)
Warto zajrzeć do:
https://docs.python.org/3.5/tutorial/datastructures.html#list-comprehensions
Jest to zwięzły zapis odpowiadający matematycznemu, np.:
$$ a^2 \;\mathrm{ dla }\; a\in \{1,2,3\}$$
In [19]:
[a**2 for a in [1,2,3]]
Out[19]:
In [20]:
[a**2 for a in [1,2,3] if a<3]
Out[20]:
Ten sam efekt można otrzymać stosując pętle for w klasyczny sposób:
In [22]:
l = [11,22,44]
print(l)
l2 = []
for el in l:
l2.append(el**2)
print(l2)
Można zagnieżdżać pętle:
In [23]:
[(i,j) for i in range(4) for j in range(3) if i!=j]
Out[23]:
http://en.wikipedia.org/wiki/MapReduce
Python ma wbudowane funkcje umożliwiające wyrażanie zagadnienia w postaci operacji mapowania i redukcji dla danych znajdujących się na liście.
In [24]:
def f(x):
return x+2
In [25]:
l = [11,22,44]
map( f, l )
Out[25]:
In [26]:
sum( l )
Out[26]:
In [29]:
import functools
def prod(x,y):
return x*y
functools.reduce ( prod, l )
Out[29]:
In [31]:
def maks(x,y):
return max(x,y)
print( l, functools.reduce ( maks, l ))
In [35]:
max(l)
Out[35]:
In [ ]: