TGViewer
Engineering Notes Engineering Notes @boboshersnotes · 2.6K subscribers
Post #599 3.45K
Array vs Tuple

Hozir Pythonda tuple va list bir-biriga juda yaqin obyektlar sifatida qaralsa-da, aslida ikkalasining kelib chiqishi butunlay ikki xil olam.

List (array)
Pythondagi list boshqa ko'pchilik tillardagi dynamic arrayga alternativ.
Array – mantiqiy jihatdan bir turdagi obyektlarning tartibli kolleksiyasi.

Ya'ni array bir xil turdagi bir qancha obyektlarni saqlash uchun ishlatiladi. Masalan, kompaniyadagi ishchilar ro'yxati. Arraydagi elementlar soni juda katta bo'lishi mumkin.

Arrayning eng kuchli tomoni bu ixtiyoriy indeksdagi elementni O(1) da olish mumkinligi. Odatda, oddiy matematikaga asoslangan offset qo'l keladi. Buning uchun ikkita shart bajarilishi kerak: arraydagi elementlar xotirada ketma-ket joylashishi va elementlarning o'lchami bir xil bo'lishi. Deylik, xotirada 1000 addressda joylashgan 32 bitli integerlardan iborat arrayning 6-o'rindagi elementini olish kerak bo'lsin. Array 1000 addressdan boshlanayapti, bizga kerakli elementdan oldingi 5 ta element 4 baytdan jami 20 bayt olsa, demak bizga kerakli element 1000 + 20 = 1020 addressda joylashgan bo'lishi kerak. Oddiy matematika yordamida kerakli element xotirada qayerda joylashganini O(1) da aniqlashning iloji bor. Umuman olganda, ko'p tillarda indekslash 1 emas 0 dan boshlanishiga sabab ham shu: indeks elementning tartib raqamini emas, u arrayning boshidan qancha uzoqda joylashganini ko'rsatadi.

Tuple
Tuple – mantiqiy jihatdan bitta katta obyektni hosil qiladigan har xil turdagi obyekt(cha)larning tartibli kolleksiyasi.

Ya'ni tupledagi har bir element bir xil turda bo'lishi shart emas, aksincha, har bir element butun obyektning kichik bir qismi. Masalan, (ishchining ismi, ishchining yoshi, ishchining maoshi) tupledagi 3 ta alohida element birlashib ishchi haqida (mantiqiy butun) ma'lumot beradi. Tupledagi elementlar soni odatda katta bo'lmaydi.

To'xta, sen aytayotgan narsa struct (yoki class) emasmi deyotgan bo'lsangiz demak tepadagilarni to'g'ri tushunayapsiz. Umuman olganda, struct ham xuddi tuplening ishini bajaradi, faqat qulay tomoni, u yerda har bitta elementga nom berilgan. Natijada 1-element ism, 2-si yosh, 3-si maosh deb eslab yurishga hojat qolmaydi. Aniqrog'i, sizning o'rningizga komputer eslab qoladi buni.

Endi eng qiziq joyi: agar elementlar o'lchami bir xil bo'lmasa unda tupleda qanday qilib elementni topamiz, offsetni hisoblash uchun elementlar o'lchami bir xil bo'lishi kerak edi-ku? Shunchaki bittalab yurib chiqamiz, boshqa variant yo'q. Masalan, tepadagi tupleda maoshni olmoqchi bo'lsak avval ism uchun uncha, yosh uchun buncha joy deb offsetni bittalab qo'shib chiqamiz. Natijada, elementni olish O(n) bo'lishi kerak edi. Lekin ozgina preprocessing orqali buni O(1) ga tushirsa bo'ladi. Tuple size odatda 100-200 dan oshmasligi hisobiga preprocessing ortiqcha ko'p vaqt va joy olmaydi.

P.S.1. Yuqoridagi narsalarni C/C++ kabi tillarda shunga yaqin holatda ko'rishingiz mumkin. Python, Javascript kabi tillarda bu narsalar ancha murakkab qurilgan va original ideadan ancha farq qiladi.

P.S.2. "Obyekt" deganda OOPdagi emas, umumiy, matematik obyekt nazarda tutilgan.

P.S.3. Strictly typed tillarda JSON obyektlarni struct/classga bind qilish yaxshiroqmi yoki map (key-value pair) ga? Bu savolning tepadagi mavzuga qanday aloqasi bor? Fikrlaringizni kommentariyada qoldiring.


@boboshersnotes
  • 👍 16
  • 👎 1
More from @boboshersnotes
  1. Oct 5, 2026I pinch the airpods once, Youtube video on my laptop is paused. I pinch it again, the vide…
  2. Oct 5, 2026The smartest kids in Kazakhstan should not be doing AI or maxxing out Claude. AI products…
  3. Sep 28, 2026https://www.youtube.com/watch?v=9HIy5dJE-zQ
  4. Sep 22, 2026spa-net.com qiziq challange ekan, kun bo'yi "enter" bosishdan zerikkanda bosh qotirib ko'r…
  5. Sep 21, 2026Bizda odatda juma kunlarining ikkinchi yarmi ishga to'g'ridan-to'g'ri aloqador bo'lmagan n…
  6. Sep 15, 2026Yandex to’lov tizimi 2-3 oydan beri stabil ishlamayotgandi o’zi, butun to’liq o’chibdi she…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →