povezanost stringova i listi
DESCRIPTION
informatikaTRANSCRIPT
![Page 1: Povezanost Stringova i Listi](https://reader030.vdocuments.mx/reader030/viewer/2022013122/563db831550346aa9a916bf7/html5/thumbnails/1.jpg)
Povezanost stringova i listi
Pretvorba stringa u listu i liste stringova u jedan string
![Page 2: Povezanost Stringova i Listi](https://reader030.vdocuments.mx/reader030/viewer/2022013122/563db831550346aa9a916bf7/html5/thumbnails/2.jpg)
Pretvorba stringa u listu
Ugrađena funkcija list() – pretvara string u listu pojedinačnih znakova
Npr.
>>> s = 'Ovo je string!'
>>> s
'Ovo je string!'
>>> l = list(s)
>>> l
['O', 'v’, 'o', ' ', 'j', 'e', ' ', 's', 't', 'r', 'i', 'n', 'g', '!']
![Page 3: Povezanost Stringova i Listi](https://reader030.vdocuments.mx/reader030/viewer/2022013122/563db831550346aa9a916bf7/html5/thumbnails/3.jpg)
Pretvorba liste u string
metoda: sep.join(lista) - sep je string koji će biti postavljen kao separator između pojedinih elemenata liste kada one budu smještene u string
Ako, npr. stavimo da je separator jedan razmak, dobit ćemo jedan string u kojem će elementi liste (stringovi) biti razdvojeni razmakom:
![Page 4: Povezanost Stringova i Listi](https://reader030.vdocuments.mx/reader030/viewer/2022013122/563db831550346aa9a916bf7/html5/thumbnails/4.jpg)
Npr.
>>> l = ['Ovo', 'će', 'postati', 'rečenica.']
>>> s = ' '.join(l)
>>> s
'Ovo će postati rečenica.'
>>> l[1] = 'je'
>>> l[2] = 'postala'
>>> s = ' '.join(l)
>>> s
'Ovo je postala rečenica.'
![Page 5: Povezanost Stringova i Listi](https://reader030.vdocuments.mx/reader030/viewer/2022013122/563db831550346aa9a916bf7/html5/thumbnails/5.jpg)
Ako želimo stringove iz liste nizati jedan do drugog bez ikakvog razmaka za separator, treba odabrati prazni znak ''.
Metodu ćemo pozivati sa : ''.join(lista).
![Page 6: Povezanost Stringova i Listi](https://reader030.vdocuments.mx/reader030/viewer/2022013122/563db831550346aa9a916bf7/html5/thumbnails/6.jpg)
Npr.
>>> l = ['O', 'v', 'o', ' ', 'j', 'e', ' ', 's', 't', 'r', 'i', 'n', 'g', '!']
>>> s_1 = ''.join(l)
>>> s_1
'Ovo je string!'
![Page 7: Povezanost Stringova i Listi](https://reader030.vdocuments.mx/reader030/viewer/2022013122/563db831550346aa9a916bf7/html5/thumbnails/7.jpg)
Npr:Funkcija za zamjenu pojedinačnog znaka u stringu
def zamjena_znaka(x, i, znak):
x_l = list(x)
x_l[i] = znak
return ''.join(x_l)
![Page 8: Povezanost Stringova i Listi](https://reader030.vdocuments.mx/reader030/viewer/2022013122/563db831550346aa9a916bf7/html5/thumbnails/8.jpg)
>>> y = 'ABCDEFGH'
>>> y = zamjena_znaka(y, 7, 'N')
>>> y
'ABCDEFGN'
>>> y = zamjena_znaka(y, 0, 'Z')
>>> y
'ZBCDENGH'
![Page 9: Povezanost Stringova i Listi](https://reader030.vdocuments.mx/reader030/viewer/2022013122/563db831550346aa9a916bf7/html5/thumbnails/9.jpg)
Npr:Kombinacija – funkcije list(string) i metode sep.join(lista)
>>> l = [str(i) for i in range(10)]
>>> print(l)
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
>>> s = ''.join(l)
>>> print(s)
0123456789
>>> s_1 = ' '.join(l)
>>> print(s_1)
0 1 2 3 4 5 6 7 8 9
>>> print('-'.join(l))
0-1-2-3-4-5-6-7-8-9
![Page 10: Povezanost Stringova i Listi](https://reader030.vdocuments.mx/reader030/viewer/2022013122/563db831550346aa9a916bf7/html5/thumbnails/10.jpg)
Python omogućuje vrlo sažeto zapisivanje složenih operacija.
Zbog razumljivosti programa nije baš preporučljivo pisati složene i nerazumljive izraze, iako je katkada korisno i praktično iskoristiti te mogućnosti.
U nastavku su navedena dva takva primjera:
![Page 11: Povezanost Stringova i Listi](https://reader030.vdocuments.mx/reader030/viewer/2022013122/563db831550346aa9a916bf7/html5/thumbnails/11.jpg)
>>> print('--'.join([str(i) for i in range(10)]))
0--1--2--3--4--5--6--7--8--9
>>> print('--'.join(2 * [str(i) for i in range(10)]))
0--1--2--3--4--5--6--7--8--9--0--1--2--3--4--5--6--7--8--9
![Page 12: Povezanost Stringova i Listi](https://reader030.vdocuments.mx/reader030/viewer/2022013122/563db831550346aa9a916bf7/html5/thumbnails/12.jpg)
Metoda split(sep)
vratit će listu sastavljenu od "riječi" u stringu, pri čemu kao separator služi parametar sep.
Ako je separator izostavljen, onda se smatra da su riječi razdvojene jednim ili više znakova razmaka odnosno posebnih znakova (\n, \t).
Moglo bi se pomisliti da ćemo uz separator jednak praznom znaku '' dobiti jednaku listu kao s prije opisanom funkcijom list(string). Međutim, Python to ne dopušta.
![Page 13: Povezanost Stringova i Listi](https://reader030.vdocuments.mx/reader030/viewer/2022013122/563db831550346aa9a916bf7/html5/thumbnails/13.jpg)
To ilustrira ovaj primjer:
>>> s_0 = 'A mene tu ni minute nema'
>>> l_0 = s_0.split('')
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
l_0 = s_0.split('')
ValueError: empty separator
![Page 14: Povezanost Stringova i Listi](https://reader030.vdocuments.mx/reader030/viewer/2022013122/563db831550346aa9a916bf7/html5/thumbnails/14.jpg)
>>> l_0 = s_0.split()
>>> l_0
['A', 'mene', 'tu', 'ni', 'minute', 'nema']
>>> s_1 = 'A\nmene\ntu\nni\nminute\nnema'
>>> s_1
'A\nmene\ntu\nni\nminute\nnema'
>>> print(s_1)
A
mene
tu
ni
minute
nema
![Page 15: Povezanost Stringova i Listi](https://reader030.vdocuments.mx/reader030/viewer/2022013122/563db831550346aa9a916bf7/html5/thumbnails/15.jpg)
>>> l_1 = s_1.split()
>>> l_1
['A', 'mene', 'tu', 'ni', 'minute', 'nema']
>>> s_2 = 'A mene tu\n ni minute nema\n\n'
>>> print(s_2)
A mene tu
ni minute nema
>>> l_2 = s_2.split()
>>> l_2
['A', 'mene', 'tu', 'ni', 'minute', 'nema']
>>>
![Page 16: Povezanost Stringova i Listi](https://reader030.vdocuments.mx/reader030/viewer/2022013122/563db831550346aa9a916bf7/html5/thumbnails/16.jpg)
Metoda string.split() posebno je prikladna pri unošenju ulaznih podataka u neki programposredstvom funkcije input()
>>> s = input('Upisati koordinate točke x, y : ')
Upisati koordinate točke x, y : 50, 70
>>> l = s.split(',')
>>> x = int(l[0])
>>> y = int(l[1])
>>> print('x = {}\ny = {}'.format(x, y))
x = 50
y = 70
![Page 17: Povezanost Stringova i Listi](https://reader030.vdocuments.mx/reader030/viewer/2022013122/563db831550346aa9a916bf7/html5/thumbnails/17.jpg)
Zadatak:
Napišimo program koji će unositi koordinate dviju točkaka u ravnini u obliku (x, y).
Program treba ispisivati koordinate one točke koja je bliže ishodištu.
Rješenje: Problem u ovom zadatku je što će koordinate
biti unesene kao string, a ne kao dva broja. Funkcija tocka pretvorit će string u par
brojeva koji predstavljaju koordinate točke.
![Page 18: Povezanost Stringova i Listi](https://reader030.vdocuments.mx/reader030/viewer/2022013122/563db831550346aa9a916bf7/html5/thumbnails/18.jpg)
from math import sqrt
def tocka(a):
'''Funkcija pretvara string u par brojeva'''
# Brisanje prve i zadnje zagrade
a = a.replace('(', '')
a = a.replace(')', '')
# pretvaranje para brojeva u listu
t = a.split(',')
return int(t[0]), int(t[1])
![Page 19: Povezanost Stringova i Listi](https://reader030.vdocuments.mx/reader030/viewer/2022013122/563db831550346aa9a916bf7/html5/thumbnails/19.jpg)
def d(a, b):
'''Funkcija vraća udaljenost točke od ishodišta'''
return sqrt(a ** 2 + b ** 2)
def main():
a = input('A: ')
b = input('B: ')
xa, ya = tocka(a)
xb, yb = tocka(b)
if d(xa, ya) > d(xb, yb):
xa, ya, xb, yb = xb, yb, xa, ya
print('Koordinate točke bliže ishodištu su: ({}, })'.format(xa, ya))
return
main()
![Page 20: Povezanost Stringova i Listi](https://reader030.vdocuments.mx/reader030/viewer/2022013122/563db831550346aa9a916bf7/html5/thumbnails/20.jpg)
Funkciju tocka možemo napisati i uporabom metode strip:
def tocka(a):
'''Funkcija pretvara string u par brojeva'''
# Brisanje prve i zadnje zagrade
a = a.strip('()')
# pretvaranje para brojeva u listu
t = a.split(',')
return int(t[0]), int(t[1])
![Page 21: Povezanost Stringova i Listi](https://reader030.vdocuments.mx/reader030/viewer/2022013122/563db831550346aa9a916bf7/html5/thumbnails/21.jpg)
>>>
A: (2, 3)
B: (2, 4)
Koordinate točke bliže ishodištu su: (2, 3)