Back to site
Since 2004, our University project has become the Internet's most widespread web hosting directory. Here we like to talk a lot about web servers, web development, networking and security services. It is, after all, our expertise. To make things better we've launched this science section with the free access to educational resources and important scientific material translated to different languages.

Razlikovanje torki i lista u Python-u



E-Scribe Vesti : programerski blog

Razlikovanje torki i lista u Python-u

Python ima naizgled slične vrste sekvenci, тorke i liste.

Razlika između ova dva koju ljudi odmah primete,osim literalne sintakse(zagrade vs. uglaste zagrade), јeste da su torke nepromenljive a liste su promenljive. Nažalost, pošto se ova razlika strogo sprovodi u Python radnom vremenu, neke druge daleko zanimljivije razlike u primeni budu previđene.

Jedan zajednički rezime onih interesantnijih, mada suptilnijih razlika je da su torke heterogene a liste su homoge. Drugim rečima:

  • torke (generalno) su sekvence raznih vrsta stvari, a vi radite sa torkama kao koherentnom jedinicom.
  • liste (generalno) su sekvence istih vrsta stvari, a vi se bavite sa stavkama individualno.

Šta su ove "vrste stvari" o kojima ja govorim? tipovi? Ponekad. Ali tipovi ne mogu reći celu priču.

Razmotrite sledeće dve strukture podataka:

>>> import time
>>> time.localtime()
(2008, 2, 5, 11, 55, 34, 1, 36, 0)

>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Prva, torka, je sekvenca u kojoj pozicija ima semantičku vrednost. Prva pozicija je uvek godina. Ova torka funkcioniše kao lagana evidencija ili struktura.

Druga, lista, je sekvenca gde nam može biti stalo do reda, ali gde su individualne vrednosti funkcionalno ekvivalentni.

Jednostavno je zamisliti dodavanje ili uklanjanje stavki iz druge bez prekidanja koda koji njime upravlja ili stvaranja nečeg ne definisanog. Za prvu, to i nije tako lako zamisliti.

Dobar primer komplementarnog korišćenja oba tipa je Python DB API-ov fetchmany() metod, koji daje rezultat upita kao liste ili torke. Rezultat postavljen kao celina je lista, pošto su redovi funkcionalno ekvivalentni (homogeni); pojedinačni redovi su torke, jer redovi su koherentni, zapisi kao grupacije (heterogene) kolona podataka.

Napomena: funkcionalni jezici, uključujući Haskell i OCaml, imaju sličnu razliku koja se strogo sprovodi. Proučavanje jednog od tih jezika može vam pomoći u razjašnjenju onoga što ovde govorim. Svakako je meni kliknulo kada sam počeo da se igram sa Haskell-om.

Postoji znatno preklapanje u načinu na koji liste i torke mogu biti korišćene, ali ugrađene mogućnosti dve strukture ističu neke od navedenih razlika.Na primer, torke nemaju "Index" мetod za utvrđivanje položaja u kome je određena vrednost pronađena.

Mislim da mi je dosta pomoglo u Python programiranju to što sam imao pomenute razlike u vidu. Nadam se da će ovaj pokušaj objašnjenja biti od pomoći nekom drugom!


Published (Last edited): 08-02-2013 , source: http://news.e-scribe.com/397