8. Fayllarni arxivlash va arxivini ochish. Katta sondagi fayllar bilan ishlaganda, ularni arxivlashga ehtiyoj tug’ilishi mumkin. Dasturchilarga arixivlash imkoniyatini zipfile modulidagi ZipFile() funktsiyasi taqdim etadi va bunda faylli zip ob`ekti yaratiladi.
from zipfile import ZipFile
from glob import glob
# Joriy papkadagi barcha .py fayllarining zip-fayli yaratiladi
files = list(glob('f*.py'))
with ZipFile('py_files.zip', 'w') as file:
for py_fayl in files:
print("*Arxivga {py_fayl.name} fayli qo'shildi")
file.write(py_fayl)
Aytaylik, tashqi manbadan zip-fayl berilgan va uni joriy papkada ochish talab qilingan bo`lsin. Agar undagi fayl nomi hamda joriy papkadagi fayl nomi bir bo`lib qolsa, uni qayta yozish haqida ko`rsatma zarur bo`ladi. Shuning uchun, arxiv fayllarini alohida papkada ochish maqsadga muvofiq bo`ladi.
from zipfile import ZipFile
with ZipFile('py_files.zip') as zip_file:
zip_file.printdir()
zip_file.extractall()
To`plamlar va ular ustida amallar bajarish
Python tilida to`plam – bu betakror elementlarning tartiblanmagan jamg’armasidan iborat bo`ladi. Tartiblanmaganlik shuni anglatadiki, to`plam uchun elementning turgan o`rni hech qanday ahamiyat kasb etmaydi. Betakrorlik esa to`plamda ikkita bir xil elementning mavjud bo`lmasligini bildiradi. Bu holda bir xil elementlar bitta deb qaraladi. To`plam elementlar quyidagi hususiyatlarga ega bo`lishi lozim:
betakror;
o`zgarmas ob`ektlar;
turli tiplarga mansub bo`lishi mumkin.
Python tilida to`plamlar ma`lumotlarning alohida turi sifatida qaraladi hamda ular ustida matematikaning to`plamlar nazariyasiga hos bo`lgan barcha amallarni bajarish imkoniyatlari ko`zda tutilgan. To`plamlar bo`sh bo`lishi ham mumkin. Masalan:
{'a', 5, "kitob"} # uch elementli to`plam;
{0, 1, 2, 3, 4, 5} # 5 ta elementli to`plam;
{ } # bo`sh to`plam.
Biror elementning u yoki bu to`plamga munosabati tegishli yoki tegishli emasligi bilan ifodalanadi. Uning to`plamda turgan o`rnining ahamiyati yo`q.
To`plam” tipidagi ob`ektlarni yaratish.
“To`plam” tipidagi ob`ektlarni quyidagi usullardan biri yordamida yaratish mumkin:
• to`plam ob`ektiga {} lar orasida elementlarini ko`rsatib o`zlashtirish. Masalan:
x = { 0, 1, 0, 'a', 1, 'b', 2 } # x = {0, 1, 2, 'a', 'b'} – elementlar betakror
• boshqa tipdagi ma`lumotlarni to`plamga akslantirish imkonini beruvchi set() funktsiyasi qaytargan qiymatlarni to`plam ob`ektiga o`zlashtirish. Masalan:
x = set(['a', 5, "textbook", 5]) # x = {5, 'kitob', 'a'}.
• to`plam ob`ektiga to`plam ustida bajarilgan qandaydir amal natijalarini o`zlashtirish (masalan, kesishma amali - &). Masalan:
x = { 1, 2, 3, 4 } & { 3, 2} # x = {2, 3}
• to`plam ob`ektiga frozenset() funktsiyasi natijalarini o`zlashtirish. Masalan:
x = frozenset([1, 2, 3, 4]) # x – o`zgarmas to`plam.
• to`plam ob`ektiga to`plamlarni qaytaruvchi funktsiya natijalarini o`zlashtirish. Masalan:
x = { 1, 2, 3, 4 }
y = { 3, 5, 7 }
z = x.union(y) # z = { 1, 2, 3, 4, 5, 7 }.
Usullar turlicha bo`lishiga qaramay, set() funktsiyasi asosiy usul sifatida qaraladi. Uni amalda qo`llashga doir quyidagi namunaga e`tibor bering.
A={1, 30, "text", True, 30, 100, False}
B=set(A)
print("V to’plam: ",B)
print(A==B)
Natijadagi 30 elementining yo`q bo`lganligi tushunarli, ammo 1 elementi qani? Gap shundaki, Python tilida mantiqiy True qiymati 1 butun son tarzida talqin qilinadi. B to`plamda A ning elementlari tartibining o`zgarishi hech narsani hal qilmaydi.
A va B to`plamlari teng deyiladi, agar A ning hamma elementlari B da, B ning hamma elementlari A to`plamda mavjud bo`lsa. SHu sababli, yuqoridagi kodda ularni taqqoslash natijasi – True bo`lgan.
Ko`rsatilgan elementni to`plamga kirish-kirmasligi in operatori yordamida aniqlanadi. Agar element to`plamga kirsa-true, aks holda-False.
A={1, 30, "text", True, 30, 100, False}
print(0 in A)
Kod natijasini tahlil qilish uchun yuqoridagi misolning izoxiga qarang.
To`plam ustida bajarish mumkin bo`lgan ayrim amallarni ko`rib chiqaylik. To`plamdagi elementlar sonini len() funktsiyasi yordamida topiladi. To`plam nushasini yaratish uchun esa soru() metodidan foydalanish mumkin. O`zlashtirish operatori yordamida to`plam nushasini yaratilganda, ya`ni bir o`zgaruvchi ko`rsatib turgan to`plamni ikkinchi o`zgaruvchiga qiymat qilib berilganda, ikkita o`zgaruvchi hosil bo`lib, ularning har ikkisi bitta to`plamni (xotira qismini) ko`rsatadi. Bir nechta o`zgaruvchining bitta to`plamni ko`rsatishini is operatori yordamida aniqlash mumkin.
A={1, 2, 3, 4, 5, 6, 7, 1, 3}
print("To'plamdagi elementlar soni=", len(A))
B=A.copy()
print("B to'plam elementlari: ",B)
print(A is B)
To`plamga yangi elementlarni qo`shishi uchun add() metodidan foydalaniladi. Bu metodning argumenti to`plamga qo`shiladigan elementni anglatadi.
To`plam elementlarini o`chirish uchun remove() yoki discard() metodlari xizmat qiladi. Bu metodlar to`plamdan chaqiriladi va o`chiriladigan element argument sifatida uzatiladi. rerove() metodi qo`llanganda istisnoli vaziyat yuzaga keladi, discard() da esa - yo`q. U shunchaki hech qanday amal bajarmaydi. To`plam elementlari to`la o`chirish uchun clear() metodidan foydalaniladi.
A={1, 2, 3, 4, 5, 7}
A.add(6)
print("A to'plamga 6 qo'shildi: ", A)
A.remove(3)
print("A to'plamdan 3 o'chirirldi:", A)
Ikki to’plam o’rtasidagi munosabatlarni aniqlashda quyidagi amal yoki metodlardan foyadalanish mumkin.
Do'stlaringiz bilan baham: |