Python - Tipovi podataka


Tipovi podataka u Python-u

Svaka vrijednost u Python-u ima vrstu podataka. Budući da je sve objekt u Python programiranju, tipovi podataka su zapravo klase, a varijable su instanca (objekt) ovih klasa. U Pythonu postoje različiti tipovi podataka. Neke od važnih vrsta su navedene u nastavku lekcije.



Python brojevi

Cijeli brojevi, brojevi s pomičnim zarezom i složeni brojevi spadaju u kategoriju Python brojeva. U Pythonu su definirane kao: int, float i complex. Možemo koristiti type() funkciju da saznamo kojoj klasi pripada varijabla ili vrijednost. Slično tome, funkcija isinstance() koristi se za provjeru pripada li objekt određenoj klasi.

a = 5
print(a, "je tipa", type(a))

a = 2.0
print(a, "je tipa", type(a))

a = 1+2j
print(a, " je kompleksan broj (is complex number)?", isinstance(1+2j,complex))

Cijeli brojevi mogu biti bilo koje dužine, ograničen je samo raspoloživom memorijom. Broj s pomičnom zarezom (floating-point number) je tačan do 15 decimalnih mjesta. Cijeli i brojevi sa pomičnim zarazom (Integer i floating points) odvojeni su decimalnim zarezima. 1 je cijeli broj (Integer), 1,0 je broj s pomičnom zarezom (floating points).

>>> a = 1234567890123456789
>>> a
1234567890123456789
>>> b = 0.1234567890123456789
>>> b
0.12345678901234568
>>> c = 1+2j
>>> c
(1+2j)

Primijetite da je float varijabla b skraćena.



Python liste

Lista je poredani redosljed stavki. To je jedan od najčešće korištenih tipova podataka u Python-u i vrlo je fleksibilna. Sve stavke na listi ne moraju biti istog tipa. Izjava liste prilično je napredna. Stavke liste odvojene su zarezima i nalaze se u uglastim zagradama [].

a = [1, 2.2, 'python']

Možemo koristiti operator [] za izdvajanje stavke ili niza stavki s popisa. Indeks započinje od 0 u Pythonu.

a = [5,10,15,20,25,30,35,40]

# a[2] = 15
print("a[2] = ", a[2])

# a[0:3] = [5, 10, 15]
print("a[0:3] = ", a[0:3])

# a[5:] = [30, 35, 40]
print("a[5:] = ", a[5:])

Liste su promjenjive, što znači da se vrijednost elemenata liste može mijenjati.

a = [1, 2, 3]
a[2] = 4
print(a)


Python Tuple

Tuple je poredani redosljed predmeta isto kao i lista. Jedina razlika je u tome što su tuples nepromjenjive. Jednom stvoreni ne mogu se mijenjati. Tuplevi se koriste za zaštitu podataka od pisanja i obično su brži od lista, jer se ne mogu dinamički mijenjati. Definisani su zagradama () gdje su stavke odvojene zarezima.

t = (5,'program', 1+3j)

Možemo koristiti operator [] za izdvajanje predmeta, ali ne možemo promijeniti njegovu vrijednost.

t = (5,'program', 1+3j)

# t[1] = 'program'
print("t[1] = ", t[1])

# t[0:3] = (5, 'program', (1+3j))
print("t[0:3] = ", t[0:3])

# Generiše grešku (error)
# Tuples su nepromjenjive
t[0] = 10


Python Strings

String je niz Unicode znakova. Za predstavljanje stringova možemo koristiti pojedinačne navodnike ili dvostruke navodnike. Stringovi s više linija mogu se označiti pomoću trostrukih navodnika, ''' ili """.

s = "Ovo je string"
print(s)
s = '''String s 
više linija'''
print(s)

Baš kao što su lista i trupel, operater [] može se koristiti sa stringovima. Stringovi su međutim nepromjenjivi.

s = 'Hello world!'

# s[4] = 'o'
print("s[4] = ", s[4])

# s[6:11] = 'world'
print("s[6:11] = ", s[6:11])

# Generiše grešku (error)
# Stringovi su nepromjenjivi u Pythonu
s[5] ='d'


Python Set

Set je neuređena kolekcija jedinstvenih predmeta. Skup je definisan vrijednostima odvojenim zarezom unutar vitičastih zagrada {}.

a = {5,2,3,1,4}

# Varijabla za ispis
print("a = ", a)

# Vrsta podataka varijable a
print(type(a))

Možemo izvoditi operacije skupova poput spajanja i presijecanja na dva skupa. Set ima jedinstvenu vrijednosti. On uklanja duplikate.

a = {1,2,2,3,3,3}
print(a)

Pošto su postavljene neuređene kolekcije, indeksiranje nema značenja. Dakle, operater [] ne radi.

>>> a = {1,2,3}
>>> a[1]
Traceback (most recent call last):
  File "<string>", line 301, in runcode
  File "<interactive input>", line 1, in <module>
TypeError: 'set' object does not support indexing


Python riječnik (Python Dictionary)

Dictionary je neuređena kolekcija parova ključ/vrijednost. Obično se koristi kada imamo ogromnu količinu podataka. Dictionary su optimizovani za preuzimanje podataka. Moramo znati ključ za preuzimanje vrijednosti. U Python-u su Dictionary definisani u vitičastim zagradama {}, a svaka stavka je par u obliku key:value. Ključ i vrijednost mogu biti bilo koje vrste.

>>> d = {1:'value','key':2}
>>> type(d)
<class 'dict'>

Koristimo ključ za dohvatanje odgovarajuće vrijednosti. Ali ne obrnuto.

d = {1:'value','key':2}
print(type(d))

print("d[1] = ", d[1]);

print("d['key'] = ", d['key']);

# Generiše grešku (error)
print("d[2] = ", d[2]);


Konverzija između tipova podataka

Možemo pretvoriti različite tipove podataka koristeći različite funkcije pretvaranja tipova poput: int(), float(), str() itd.

>>> float(5)
5.0

Konverzija iz float u int će skratiti vrijednost (neka bude bliža nuli).

>>> int(10.6)
10
>>> int(-10.6)
-10

Konverzija u i iz stringa mora da sadrži kompatibilne vrijednosti.

>>> float('2.5')
2.5
>>> str(25)
'25'
>>> int('1p')
Traceback (most recent call last):
  File "<string>", line 301, in runcode
  File "<interactive input>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '1p'

Čak možemo pretvoriti jednu sekvencu u drugu.

>>> set([1,2,3])
{1, 2, 3}
>>> tuple({5,6,7})
(5, 6, 7)
>>> list('hello')
['h', 'e', 'l', 'l', 'o']

Da biste pretvorili u Dictionary, svaki element mora biti par:

>>> dict([[1,2],[3,4]])
{1: 2, 3: 4}
>>> dict([(3,26),(4,44)])
{3: 26, 4: 44}