Kako provjeriti je li popis prazan?

Na primjer, ako se prenosi sljedeće:

 a = [] 

Kako provjeriti ako?

3040
10 сент. postavio Ray Vega 10. rujna. 2008-09-10 09:20 '08 u 9:20 2008-09-10 09:20
@ 49 odgovora
  • 1
  • 2
 if not a: print("List is empty") 

Korištenje implicitne logike praznog popisa prilično je pitonično.

4321
10 сент. Odgovor dao Patrick Sep 10 2008-09-10 09:28 '08 u 9:28 2008-09-10 09:28

Pythonic način da to učinite iz PEP 8 vodiča za stil (gdje " Da" znači "preporučeno" i " Ne" znači "nije preporučeno"):

border=0

Za sekvence (nizove, popise, brojeve) upotrijebite činjenicu da su prazne sekvence netočne.

 Yes: if not seq: if seq: No: if len(seq): if not len(seq): 
950
10 сент. odgovor je dao Harley Holcombe 10 sep . 2008-09-10 13:33 '08 u 13:33 2008-09-10 13:33

Ovo izričito preferiram:

 if len(li) == 0: print('the list is empty') 

Stoga je 100% jasno da je li slijed (popis) i želimo provjeriti njegovu veličinu. Moj problem s if not li: ... je da daje pogrešan dojam da je li logična varijabla.

583
05 сент. Odgovor dao Jabba 05. rujna. 2011-09-05 03:30 '11 u 3:30 2011-09-05 03:30

Čini se da drugi ljudi sažimaju pitanje koje ide dalje od popisa, pa sam pomislio da bih dodao rezervaciju drugoj vrsti sekvenci koju mnogi ljudi mogu koristiti, pogotovo jer je to prvi Googleov hit za “prazan python niz” ,,

Druge metode ne rade za numpy nizove

Morate biti oprezni s numeričkim nizovima, jer druge metode koje rade dobro za list ili druge standardne spremnike ne rade za numpy nizove. Objašnjavam zašto, ali ukratko, preferirana metoda je korištenje size .

"Pythonic" metoda ne radi: 1. dio

Metoda "Pythonic" ne uspijeva sa numpy nizovima, jer numpy pokušava prenijeti niz u bool s, i if x pokuša procijeniti sve te bool odjednom za neku kumulativnu vrijednost istine. Ali nema smisla, tako da dobijate ValueError :

 >>> x = numpy.array([0,1]) >>> if x: print("x") ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() 

"Pythonic" metoda ne radi: 2. dio

Ali barem gore navedeni slučaj govori da to nije prošlo. Ako imate numpy niz s točno jednim elementom, if će "raditi" u smislu da ne dobijete pogrešku. Međutim, ako ovaj pojedinačni element ima vrijednost 0 (ili 0.0 ili false , ...), if će lažno rezultirati false :

 >>> x = numpy.array([0,]) >>> if x: print("x") ... else: print("No x") No x 

Ali jasno je da x postoji i nije prazan! Ovaj rezultat nije ono što ste željeli.

Korištenje len može dati neočekivane rezultate.

Na primjer

 len( numpy.zeros((1,0)) ) 

vrati 1, iako niz ima nula elemenata.

neočekivano

Kao što je objašnjeno u Scipy FAQ-u , ispravna metoda u svim slučajevima kada znate da imate numpy niz treba koristiti, if x.size :

 >>> x = numpy.array([0,1]) >>> if x.size: print("x") x >>> x = numpy.array([0,]) >>> if x.size: print("x") ... else: print("No x") x >>> x = numpy.zeros((1,0)) >>> if x.size: print("x") ... else: print("No x") No x 

Ako niste sigurni može li to biti list , numerički niz ili nešto drugo, taj pristup možete kombinirati s odgovorom @dubiousjim kako biste bili sigurni da se za svaki tip koristi ispravan test. Ne baš "pitonska", ali se ispostavlja da je numpy namjerno prekinuo pitonsku, barem u tom smislu.

Ako trebate učiniti više od samo provjere je li unos prazan, a koristite druge funkcije numpy, kao što su indeksiranje ili matematičke operacije, vjerojatno je učinkovitije (i, naravno, češće) napraviti ulazni niz kao niz numpy. Postoje neke dobre značajke za to brzo - najvažnija stvar je numpy.asarray . On uzima vaš unos, ne radi ništa ako je već polje ili prenosi vaš unos u polje, ako je to popis, tuple, itd., I eventualno ga pretvara u odabrani dtype . Tako da je vrlo brzo kada može biti, a to osigurava da samo pretpostavljate da je unos numpy niz. Obično samo koristimo isto ime, budući da pretvorba u polje neće biti izlaz izvan trenutne regije :

 x = numpy.asarray(x, dtype=numpy.double) 

Time će x.size provjeriti x.size u svim slučajevima koje vidim na ovoj stranici.

235
21 февр. Odgovor je dao Mike 21. veljače. 2012-02-21 19:48 '12 u 7:48 pm 2012-02-21 19:48

Prazan popis sam po sebi smatra se netočnim pri testiranju istinskih vrijednosti (pogledajte dokumentaciju za python ):

 a = [] if a: print "not empty" 

@Daren Thomas

EDIT: Druga točka protiv testiranja je prazna lista: Netočno: kako o polimorfizmu? Ne morate ovisiti o popisu - popisu. Trebao bi biti nadriliječnik poput patke - kako ćeš dobiti "lažne" patke ako nema stvari?

Vaša DuckCollection mora implementirati __nonzero__ ili __len__ , pa ako: će raditi bez problema.

116
10 сент. Odgovor dao Peter Hoffmann 10. rujna 2008-09-10 09:31 '08 u 9:31 am 2008-09-10 09:31

Najbolji način da provjerite je li popis prazan

Na primjer, ako se prenosi sljedeće:

 a = [] 

Kako provjeriti je li prazan?

Kratak odgovor:

Stavite popis u logički kontekst (na primjer, s izrazom if ili while ). On će označiti False ako je prazan, a True suprotnom. Na primjer:

 if not a: # do this! print('a is an empty list') 

Žalba vlastima

PEP 8 , službeni Python stilski vodič za Python kod u standardnoj Python knjižnici, navodi:

Za sekvence (nizove, popise, brojeve) upotrijebite činjenicu da su prazne sekvence netočne.

 Yes: if not seq: if seq: No: if len(seq): if not len(seq): 

Trebali bismo očekivati ​​da je standardni kôd knjižnice što realniji i točniji. Ali zašto je ovo i zašto nam treba ovaj vodič?

objašnjenje

Taj kod često vidim od iskusnih programera koji su novi u Pythonu:

 if len(a) == 0: # Don't do this! print('a is an empty list') 

A korisnici lijenih jezika možda će doći u iskušenje da to učine:

 if a == []: # Don't do this! print('a is an empty list') 

Istina je i na drugim jezicima. I to je čak i semantički ispravno u Pythonu.

Ali smatramo da je ne-Pythonic, jer Python podržava ovu semantiku izravno u sučelju objekata popisa koristeći logičku prisilu.

Iz dokumenata (i zabilježite uključivanje praznog popisa, [] ):

Po defaultu, objekt se smatra istinitim ako njegova klasa ne definira __bool__() koja vraća False metodu ili __len__() koja vraća nulu kada se pozove s objektom. Evo većine ugrađenih objekata koji čitaju lažno:

  • konstante definirane kao false: None i False .
  • nula bilo kojeg numeričkog tipa: 0 , 0.0 , 0j , Decimal(0) , Fraction(0, 1)
  • prazne sekvence i zbirke: '' , () , [] , {} , set() , range(0)

I dokumentacija podatkovnog modela:

object.__bool__(self)

Pozvani da provedu ispitivanje stvarne vrijednosti i ugrađenu operaciju bool() ; mora vratiti False ili True . Kada ova metoda nije definirana, __len__() , ako je definirana, a objekt se smatra istinitim ako je rezultat ne-nula. Ako klasa ne definira ni __len__() ili __bool__() , sve se njezine instance smatraju istinitim.

i također

object.__len__(self)

Pozvani da implementiraju ugrađenu funkciju len() . Mora vratiti duljinu objekta, cijeli broj> = 0. Osim toga, objekt koji ne definira metodu __bool__() __len__() vraća nulu, smatra se netočnom u boolean kontekstu.

Stoga umjesto toga:

 if len(a) == 0: # Don't do this! print('a is an empty list') 

ili ovo:

 if a == []: # Don't do this! print('a is an empty list') 

Učinite to:

 if not a: print('a is an empty list') 

Raditi ono što se Pythonic obično isplati u izvedbi:

Je li plaćeno? (Imajte na umu da je manje vremena za izvođenje ekvivalentnog postupka bolje :)

 >>> import timeit >>> min(timeit.repeat(lambda: len([]) == 0, repeat=100)) 0.13775854044661884 >>> min(timeit.repeat(lambda: [] == [], repeat=100)) 0.0984637276455409 >>> min(timeit.repeat(lambda: not [], repeat=100)) 0.07878462291455435 

Za mjerilo, ovdje je trošak pozivanja funkcije i izgradnje i vraćanja praznog popisa, koji možete oduzeti od cijene gore navedenih provjera praznine:

 >>> min(timeit.repeat(lambda: [], repeat=100)) 0.07074015751817342 

Vidimo da je ili provjera duljine s ugrađenom len funkcijom u usporedbi s 0 ili provjera za praznu listu mnogo manje učinkovita od korištenja ugrađene sintakse jezika, kao što je dokumentirano.

Zašto?

Za len(a) == 0 provjerite:

Prvi Python trebao bi provjeriti globalne varijable kako bi vidio je li len zasjenjen.

Tada bi trebao pozvati funkciju, učitati 0 i izvesti usporedbu jednakosti u Pythonu (umjesto C):

 >>> import dis >>> dis.dis(lambda: len([]) == 0) 1 0 LOAD_GLOBAL 0 (len) 2 BUILD_LIST 0 4 CALL_FUNCTION 1 6 LOAD_CONST 1 (0) 8 COMPARE_OP 2 (==) 10 RETURN_VALUE 

A za [] == [] on mora stvoriti nepotreban popis, a zatim izvesti usporednu operaciju u Python virtualnom stroju (za razliku od C)

 >>> dis.dis(lambda: [] == []) 1 0 BUILD_LIST 0 2 BUILD_LIST 0 4 COMPARE_OP 2 (==) 6 RETURN_VALUE 

Staza "Pythonic" mnogo je jednostavnija i brža, budući da je duljina popisa predmemorirana u zaglavlju instance objekta:

 >>> dis.dis(lambda: not []) 1 0 BUILD_LIST 0 2 UNARY_NOT 4 RETURN_VALUE 

Podaci iz C izvora i dokumentacije

PyVarObject

Ovo je PyObject ekstenzija koja dodaje polje ob_size . Ovo se koristi samo za objekte koji imaju neki pojam duljine. Ovaj tip se često ne pojavljuje u API-ju Python / C. Odgovara poljima koja definira makronaredba PyObject_VAR_HEAD .

Od izvora c do Include / listobject.h :

 typedef struct { PyObject_VAR_HEAD  PyObject **ob_item; /* ob_item contains space for 'allocated' elements. The number * currently in use is ob_size. * Invariants: * 0 <= ob_size <= allocated * len(list) == ob_size 

Volio sam istraživati ​​ovo i mnogo vremena provodim na svojim odgovorima. Ako mislite da nešto ostavljam, javite mi u komentarima.

112
20 авг. Odgovori Aaron Hall 20 aug. 2017-08-20 06:50 '17 u 6:50 2017-08-20 06:50

Patrickov odgovor (prihvaćen) je u pravu: if not a: je pravi način. Odgovor Harley Holcombe je u pravu što je to u PEP 8 vodiču za stil, ali nijedan od odgovora ne objašnjava zašto je dobra ideja slijediti idiom - čak i ako osobno smatrate da to nije eksplicitno ili zbunjujuće za Ruby korisnike ili bilo što drugo.

Python kod i Python zajednica imaju vrlo jake idiome. Nakon tih idioma, vaš je kod lakše čitati svima koji imaju iskustva u Pythonu. A kad prekršite ove idiome, to je snažan signal.

Istina je da if not a: ne odabire prazne liste iz None , ili brojčane 0, ili prazne tuple, ili prazne korisničke vrste zbirki, ili prazne korisničke tipove nedovršenih zbirki, ili NumPy matrice s jednim elementom, koje djeluju kao skalari s lažne vrijednosti, itd. A ponekad je važno biti eksplicitan. I u ovom slučaju, znate što želite biti eksplicitni, pa provjerite sigurno. Na primjer, if not a and a is not None: znači "nešto pogrešno, osim Ništa", a if len(a) != 0: znači "samo prazne sekvence - i sve osim slijeda je ovdje pogreška" i .d).. Osim testiranja onoga što želite testirati, ono također signalizira čitatelju da je ovaj test važan.

Ali ako nemate o čemu razgovarati, ništa osim if not a: zavodi čitatelja. Ti signaliziraš nešto važno kad nije. (Također možete napraviti kod manje fleksibilan ili spor, ili nešto drugo, ali to je sve manje važno.) I ako obično obmanjujete čitatelja, ovako, onda kada trebate napraviti razliku, to će proći nezapaženo, jer da si bio "vuk u plaču" po cijelom kodu.

87
03 дек. odgovor je dan 03 dec. 2014-12-03 05:21 '14 u 5:21 AM 2014-12-03 05:21

U nastavku sam vidio kao poželjno:

 if not a: print("The list is empty or null") 
67
10 сент. odgovor je dat hazzen 10 sep . 2008-09-10 09:28 '08 u 9:28 2008-09-10 09:28

Zašto uopće provjeravati?

Čini se da nitko nije postavio pitanje o potrebi da se prvi popis provjeri. Budući da niste dali nikakav dodatni kontekst, mogu zamisliti da možda nećete morati ovo provjeravati, ali oni nisu upoznati s obradom popisa u Pythonu.

Rekao bih da je najglasniji način da se uopće ne provjeri, već jednostavno da se obradi popis. Tako će on učiniti pravu stvar, bilo da je prazna ili puna.

 a = [] for item in a: <do something with item> <rest of code> 

To ima prednost obrade bilo kojeg sadržaja bez potrebe za posebnim testiranjem za prazninu. Ako je a prazan, ovisni blok neće biti izvršen, a tumač će prijeći u sljedeći redak.

Ako stvarno trebate provjeriti polje praznine, postoji još mnogo drugih odgovora.

59
06 окт. odgovor je dao MrWonderful Oct 06 2015-10-06 22:25 '15 u 22:25 sati 2015-10-06 22:25

len() je operacija O (1) za popise, nizove, diktate i Pythonove skupove. Python interno prati broj elemenata u tim spremnicima.

JavaScript ima sličan pojam istine / lažnog .

54
15 сент. odgovor daje George V. Reilly 15. rujna. 2008-09-15 08:50 '08 u 8:50 am 2008-09-15 08:50

Napisao sam:

 if isinstance(a, (list, some, other, types, i, accept)) and not a: do_stuff 

koji je izglasan -1. Nisam siguran da je to zato što su se čitatelji usprotivili strategiji ili su mislili da odgovor nije koristan, kao što je prikazano. Pretvarat ću se da je ovo posljednje, jer - bez obzira na to što se smatra "pitonom", ovo je ispravna strategija. Ako već niste isključili ili ste spremni nositi se s slučajevima u kojima a , na primjer, False , potreban test koji je restriktivniji nego samo if not a: Možete upotrijebiti nešto poput ovoga:

 if isinstance(a, numpy.ndarray) and not a.size: do_stuff elif isinstance(a, collections.Sized) and not a: do_stuff 

prvi test kao odgovor na odgovor @Mike, gore. Treći redak također se može zamijeniti s:

 elif isinstance(a, (list, tuple)) and not a: 

ako želite prihvatiti samo primjere određenih vrsta (i njihovih podtipova) ili koristiti

 elif isinstance(a, (list, tuple)) and not len(a): 

Možete ostaviti bez eksplicitne provjere tipa, ali samo ako vas okolni kontekst već uvjerava da je a vrijednost tipova koje ste spremni obraditi, ili ako ste sigurni da tipovi koje koristite nisu pripremljeni za obradu povećavaju pogreške (na primjer , TypeError , ako pozovete len na vrijednost za koju je nedefinirana, koju ste spremni obraditi. Općenito, čini se da su "pitonski" sporazumi posljednji put. Stisnite ga kao patku i pustite ga da podigne DuckError ako ne zna kako kvariti. Još uvijek morate razmišljati o tome koje pretpostavke napravite, te postoje li slučajevi kada niste spremni primijeniti pravi pristup, oni će napraviti pogreške na pravim mjestima. Numpy polja su dobar primjer kada se samo slijepo oslanjaju na len , ili logički tip ne može učiniti točno ono što očekujete.

32
31 мая '12 в 17:35 2012-05-31 17:35 odgovor je dao dubiousjim 31. svibnja '12 u 17:35 2012-05-31 17:35

Python je vrlo konzistentan s obzirom na tretman praznine. S obzirom na sljedeće:

 a = [] . . . if a: print("List is not empty.") else: print("List is empty.") 

Jednostavno provjerite popis s izrazom if da biste vidjeli je li prazan. Od onoga što sam ga pročitao i naučio, ovo je "Pythonic" način da vidim da je popis ili tuple prazan.

28
02 июня '12 в 18:40 2012-06-02 18:40 odgovor je dat oktopusgrabbus 02 Lipanj '12 u 18:40 2012-06-02 18:40

Neke od metoda koje koristim su:

 if not a: print "list is empty" if len(a) == 0: print "list is empty" 
24
27 окт. odgovor od Hackaholic 27. listopada. 2014-10-27 03:35 '14 u 3:35 am 2014-10-27 03:35

Iz dokumentacije za testiranje vrijednosti istine:

Sve vrijednosti osim ovdje navedenih, smatraju se True

  • None
  • False
  • nula bilo kojeg numeričkog tipa, na primjer 0 , 0.0 , 0j .
  • bilo koji prazan slijed, na primjer '' , () , [] .
  • bilo koje prazno mapiranje, na primjer {} .
  • instance prilagođenih klasa ako klasa definira __bool__() ili __len__() , kada ova metoda vraća cijeli broj 0 ili vrijednost bool False .

Kao što možete vidjeti, prazni [] popis je netočan, tako da činiti ono što bi bilo učinjeno s booleovom vrijednosti zvuči najučinkovitije:

 if not a: print('"a" is empty!') 
24
01 янв. odgovor je dat Svedaoshƒaӽ 01 jan. 2016-01-01 21:18 '16 u 21:18 2016-01-01 21:18

Evo nekoliko načina za provjeru praznog popisa:

 a = [] #the list 

1) Prilično jednostavan način:

 if not a: print("a is empty") 

U Pythonu, prazni spremnici , kao što su popisi, tuples, setovi, diktati, varijable itd. smatra se False . Možete jednostavno tretirati popis kao predikat (vraćanje logičke vrijednosti). I vrijednost True označava da nije prazna.

2) . Izričito: pomoću len() možete pronaći duljinu i provjeriti odgovara li 0 :

 if len(a) == 0: print("a is empty") 

3) Ili ga usporedite s praznim anonimnim popisom:

 if a == []: print("a is empty") 

4) Još jedan glup način je korištenje exception i iter() :

 try: next(iter(a)) # list has elements except StopIteration: print("Error: a is empty") 
18
28 нояб. odgovor daje Inconnu 28. studenog. 2016-11-28 17:18 '16 u 17:18 2016-11-28 17:18

Radije bih sljedeće:

 if a == []: print "The list is empty." 
10
10 сент. odgovor je dao verix 10. rujna 2008-09-10 09:43 '08 u 9:43 2008-09-10 09:43
 def list_test (L): if L is None : print 'list is None' elif not L : print 'list is empty' else: print 'list has %d elements' % len(L) list_test(None) list_test([]) list_test([1,2,3]) 

Ponekad je korisno testirati None a za praznine odvojeno, jer su to dva različita stanja. Gornji kod proizvodi sljedeće izlaze:

 list is None list is empty list has 3 elements 

Iako ništa ne vrijedi, None nije lažan. Stoga, ako ne želite odvojiti test za None -ness, ne morate to učiniti.

 def list_test2 (L): if not L : print 'list is empty' else: print 'list has %d elements' % len(L) list_test2(None) list_test2([]) list_test2([1,2,3]) 

proizvodi očekivano

 list is empty list is empty list has 3 elements 
7
14 апр. Odgovori Tagar 14 apr. 2016-04-14 00:55 '16 u 0:55 2016-04-14 00:55

Naravno da postoji i

print a or "List is empty"

6
16 февр. odgovor je dat spedy 16. veljače. 2016-02-16 02:18 '16 u 2:18 2016-02-16 02:18

Također možete učiniti:

 if len(a_list): print "it not empty" 
5
02 дек. Odgovor daje AndrewSmiley 02. prosinca. 2017-12-02 22:48 '17 u 22:48 2017-12-02 22:48
 >>> 'Not Empty' if a else 'Empty' 


Vidi Primjeri

 >>> a = [] >>> 'Not Empty' if a else 'Empty' 'Empty' 


 >>> a = [0, 1, 2, 3] >>> 'Not Empty' if a else 'Empty' 'Not Empty' 
4
02 дек. odgovor je dat Shameem 02 dec. 2017-12-02 22:48 '17 u 22:48 2017-12-02 22:48

Počevši od python3 možete koristiti

 a == [] 

provjerite je li popis prazan

EDIT: radi s python2.7.

Nisam siguran zašto ima toliko kompliciranih odgovora. To je prilično jasno i jednostavno.

3
06 нояб. odgovor je dao Dheeraj M Pai 6. studenog 2018-11-06 12:55 '18 u 12:55 2018-11-06 12:55

Možete provjeriti je li duljina polja jednaka nuli (ili ne). Ako je duljina polja jednaka nuli , tada je prazna . pokušajte sljedeće:

 a = [] if len(a)==0 : print "List is empty" 
3
14 нояб. odgovor je dao Siddharth Satpathy 14. studenog. 2018-11-14 22:02 '18 u 22:02 2018-11-14 22:02

Drugi jednostavan način može biti

 a = [] if len(a) == 0: print("Empty") else: print(" Not empty") 
3
19 марта '18 в 14:14 2018-03-19 14:14 odgovor je dao Devendra Bhat 19. ožujka u 14:14 sati 2018-03-19 14:14

Bilo koji prazan slijed ocjenjuje se False u Pythonu:

 >>> lst = [] >>> bool(lst) False >>> not lst True >>> 

To se temelji na sličnom odgovoru za rječnike.

  • bilo koji prazan slijed, na primjer, '', (), [].

  • bilo koje prazno mapiranje, na primjer {}.

2
02 дек. Odgovor je dan Tarek Kalaji 02 dec. 2017-12-02 22:48 '17 u 22:48 2017-12-02 22:48

Dano je mnogo odgovora, a mnogi od njih su prilično dobri. Samo sam htio dodati tu provjeru

 not a 

Također dolaze za None i druge vrste praznih struktura. Ako doista želite provjeriti prazan popis, učinite sljedeće:

 if isinstance(a, list) and len(a)==0: print("Received an empty list") 
2
12 окт. HackerBoss 12. listopada 2018-10-12 07:01 '18 u 7:01 am 2018-10-12 07:01

Druga metoda koja nije navedena u prethodnim odgovorima i ne može biti "najbolji način" za provjeru je li list prazan ili ne, koristi se posebna list.__sizeof__() metoda list.__sizeof__() , koja vraća int , koja predstavlja veličinu trenutne liste u memoriji. u bajtovima.

primjer:

Prazan popis

 a = [] # Or a = list() size = a.__sizeof__() print(size) # With 64bit OS it will output: 40 >>> 20 

Nema praznog popisa

 a = [1] b = list('1') size_a = a.__sizeof__() size_b = b.__sizeof__() print(size_a) print(size_b) # With 64bit OS it will output: # 48 # 72 >>> 24 >>> 36 

Kao što vidimo, sizeof none empty list premašuje sizeof empty list .

Dakle, možemo provjeriti je li popis prazan ili ne, na primjer, kako slijedi:

 # For 64 bit OS: # is_empty = lambda x: x.__sizeof__() is 40 is_empty = lambda x: x.__sizeof__() is 20 a = [] # Or: a = list() b = [1] c = list('1') print("a is empty:", is_empty(a)) print("b is empty:", is_empty(b)) print("c is empty:", is_empty(c)) >>> a is empty: True >>> b is empty: False >>> c is empty: False 

Bonus:

sizeof prazan dict , str i tuple :

 bonus = [{}, '', ()] for k in bonus: print(k.__sizeof__()) # With 64 bit OS it will output: # 264 # 49 # 24 >>> 132 # size of an empty dict >>> 25 # size of an empty str >>> 12 # size of an empty tuple 
2
02 дек. Odgovor daje Chiheb Nexus 02. prosinca. 2017-12-02 22:48 '17 u 22:48 2017-12-02 22:48