Ro'yxatlar bilan tanishish
Pythonda elementlarni birgalikda guruhlashga imkon beruvchi bir nechta ma'lumot turlari bor. Ro'yxatlar (lists) — eng ko'p ishlatiladigan va ko'p qirrali ma'lumot turlaridan biri. Masalan, elektron tijorat (e-commerce) sayti foydalanuvchi savatchasiga qo'shgan mahsulotlarni saqlash uchun ro'yxatdan foydalanishi mumkin.
Ro'yxatlar aynan shu vazifaga mos kelishining sabablari:
Ro'yxat yaratishning eng keng tarqalgan usuli — elementlarni kvadrat qavslar [] ichiga, vergul bilan ajratib joylashtirish. Masalan,
cart = ["T-shirt", "Lamp", "Pen"]
print(cart)
# Aralash ma'lumot turlaridan iborat ro'yxat
my_list = [1, "Python", 3.14]
print(my_list)
# Bo'sh ro'yxat
my_list = []
print(my_list)
list() funksiyasidan foydalanib ham ro'yxat yaratishimiz mumkin. Bu funksiya iterable (masalan, satrlar, range() va h.k.) obyektni ro'yxatga aylantiradi. Masalan,
vowels = "aeiou"
# Satrni ro'yxatga aylantirish
vowels_list = list(vowels)
print(vowels_list)
Natija
['a', 'e', 'i', 'o', 'u']
Ro'yxatdagi elementlar tartiblangan va har bir element index deb ataluvchi butun songa bog'langan.
Birinchi elementning indeksi 0, ikkinchi elementning indeksi 1 va hokazo.
Ro'yxat elementlarining indeksi

Ro'yxat elementlariga murojaat qilish uchun shu indekslardan foydalanamiz. Masalan,
languages = ["Python", "Swift", "C++"]
# Birinchi elementga murojaat qilish
print(f"languages[0] = {languages[0]}")
# Uchinchi elementga murojaat qilish
print(f"languages[2] = {languages[2]}")
Natija
languages[0] = Python
languages[2] = C++
Manfiy indekslash (Negative Indexing)
Python manfiy indekslashni ham qo'llab-quvvatlaydi. Oxirgi elementning indeksi -1, oxiridan ikkinchi elementning indeksi -2 va hokazo.
Keling, bir misolni ko'rib chiqamiz.
languages = ["Python", "Swift", "C++"]
# Oxirgi elementga murojaat qilish
print('languages[-1] =', languages[-1])
# Oxiridan uchinchi elementga murojaat qilish
print('languages[-3] =', languages[-3])
Natija
languages[-1] = C++
languages[-3] = Python
Shuningdek, : slicing operatori yordamida ro'yxatning (yoki boshqa har qanday ketma-ketlikning) bir qismini osongina olishimiz yoki yangilashimiz mumkin. Alohida qo'llanma orqali ko'proq bilib oling: Python Slicing.
Aytib o'tilganidek, ro'yxatlar o'zgaruvchan (mutable) va biz ro'yxat elementlarini qo'shishimiz va yangilashimiz mumkin.
Ro'yxat elementlarini yangilash
Belgilangan pozitsiyaga yangi element berish uchun = operatoridan foydalanamiz.
cart = ["T-shirt", "Lamp", "Pen"]
# Ikkinchi elementni "Shoes"ga yangilash
cart[1] = "Shoes"
print(cart) # ['T-shirt', 'Shoes', 'Pen']
Ro'yxatga elementlar qo'shish
Ro'yxat oxiriga element qo'shish uchun append() metodidan foydalanishimiz mumkin.
cart = ["T-shirt", "Lamp", "Pen"]
# Ro'yxatga "Book" qo'shish
cart.append("Book")
print(cart) # ['T-shirt', 'Lamp', 'Pen', 'Book']
Agar boshqa bir ro'yxatdan (yoki boshqa har qanday iterable'dan) barcha elementlarni qo'shishimiz kerak bo'lsa, extend() metodidan foydalanishimiz mumkin.
cart = ["T-shirt", "Lamp", "Pen"]
fav_items = ["Headphones", "Phone"]
# fav_items'dagi barcha elementlarni cart'ga qo'shish
cart.extend(fav_items)
print(cart) # ['T-shirt', 'Lamp', 'Pen', 'Headphones', 'Phone']
Shuningdek, insert() metodi yordamida belgilangan pozitsiyaga element qo'shishimiz ham mumkin.
cart = ["T-shirt", "Lamp", "Pen"]
# 2-indeksga (3-pozitsiyaga) "Book" qo'shish
cart.insert(2, "Book")
print(cart) # ['T-shirt', 'Lamp', 'Book', 'Pen']
Ro'yxatdan elementlarni o'chirish uchun remove(), pop() va clear() kabi bir nechta metodlardan foydalanishimiz mumkin. Qaysi metoddan foydalanish talabimizga bog'liq.
remove() metodi ro'yxatdan belgilangan elementni o'chiradi.
pop() metodi (agar indeks berilmagan bo'lsa) oxirgi elementni o'chiradi va qaytaradi. Bu bizga ro'yxatlarni stek (stack, oxirgi kirgan birinchi chiqadi ma'lumot tuzilmasi) sifatida amalga oshirishga yordam beradi.
clear() metodi ro'yxatni bo'shatadi.
cart = ["T-shirt", "Lamp", "Pen", "Book"]
# Ro'yxatdan "Pen"ni o'chirish
cart.remove("Pen") # ['T-shirt', 'Lamp', 'Book']
# Oxirgi elementni o'chirish
last_item = cart.pop()
print(cart) # ['T-shirt', 'Lamp']
print(last_item) # Book
# Ro'yxatni tozalash
cart.clear()
print(cart) # []
Aytgancha, del kalit so'zi yordamida alohida elementlarni yoki hatto ro'yxatning o'zini ham o'chirib tashlashimiz mumkin.
cart = ['T-shirt', 'Lamp', 'Pen', 'Book']
# Uchinchi elementni (2-indeks) o'chirish
del cart[2]
print(cart) # ['T-shirt', 'Lamp', 'Book']
# Ro'yxatning o'zini o'chirish
del cart
print(cart) # NameError: name 'cart' is not defined
Aytaylik, bizda favorite_items ro'yxati bor va uni cart ro'yxatiga nusxalamoqchimiz. Agar ro'yxatni nusxalash uchun = operatoridan foydalansak, bu ishlayotgandek tuyulishi mumkin, lekin bunda yashirin muammo bor. Avval shu muammoni tushunib olamiz, keyin uni qanday tuzatishni o'rganamiz.
favorite_items = ["T-shirt", "Lamp", "Pen"]
cart = favorite_items
# favorite_items ro'yxatiga element qo'shish
favorite_items.append("Book")
print(f"favorite_items = {favorite_items}")
print(f"cart = {cart}")
Natija
favorite_items = ['T-shirt', 'Lamp', 'Pen', 'Book']
cart = ['T-shirt', 'Lamp', 'Pen', 'Book']
Dasturda biz favorite_itemsga "Book"ni qo'shdik. Biroq, bu avtomatik ravishda cart ro'yxatini ham yangiladi. Bu shuning uchun sodir bo'ladiki, = nusxa yaratmaydi. Buning o'rniga, tenglashtirish cart o'zgaruvchisini xotiradagi xuddi shu favorite_items ro'yxatiga ishora qiladigan qiladi.
Bu muammoni hal qilish uchun copy() metodidan foydalanamiz.
favorite_items = ["T-shirt", "Lamp", "Pen"]
# Ro'yxatni nusxalash
cart = favorite_items.copy()
# favorite_items ro'yxatiga element qo'shish
favorite_items.append("Book")
print(f"favorite_items = {favorite_items}")
print(f"cart = {cart}")
Natija
favorite_items = ['T-shirt', 'Lamp', 'Pen', 'Book']
cart = ['T-shirt', 'Lamp', 'Pen']
copy() metodi ro'yxatning sayoz (shallow) nusxasini qaytaradi. Bu shuni anglatadiki, nusxalangan ro'yxat dastlabki ro'yxatdan boshqa (alohida). Endi dasturimiz kutilgandek ishlaydi.
Python bizga ro'yxatlar bilan ishlashni juda osonlashtiradigan ko'plab tayyor (built-in) metodlarni taqdim etadi. Ularga ro'yxat.metod() ko'rinishida murojaat qilinadi.
Yuqorida biz allaqachon ba'zi metodlardan foydalandik. Mana metodlarning to'liq ro'yxati:
| Metod | Tavsif |
|---|---|
append() | Ro'yxat oxiriga element qo'shadi |
extend() | Boshqa ro'yxatdan (yoki boshqa har qanday iterable'dan) barcha elementlarni qo'shadi |
insert() | Belgilangan indeksga element qo'yadi |
remove() | Ro'yxatdan belgilangan qiymatni o'chiradi |
pop() | Oxirgi elementni yoki berilgan indeksdagi elementni qaytaradi va o'chiradi |
clear() | Ro'yxatdan barcha elementlarni o'chiradi |
index() | Birinchi mos kelgan elementning indeksini qaytaradi |
count() | Belgilangan elementning sonini qaytaradi |
sort() | Ro'yxatni o'sish/kamayish tartibida saralaydi |
reverse() | Ro'yxatni teskari tartibga o'giradi |
copy() | Ro'yxatning sayoz (shallow) nusxasini qaytaradi |
enumerate(), len(), max(), min(), sorted() kabi tayyor (built-in) funksiyalar odatda ro'yxatlar bilan turli vazifalarni bajarish uchun ishlatiladi. Pythondagi barcha tayyor funksiyalarni shu yerdan topishingiz mumkin.
Yodda saqlashga arziydigan bitta tayyor funksiya — len(). len() funksiyasi ro'yxatdagi elementlar sonini qaytaradi.
favorite_items = ["T-shirt", "Lamp", "Pen"]
size = len(favorite_items)
print(size) # 3
in kalit so'zi yordamida biror element ro'yxatda mavjud yoki yo'qligini tekshirishimiz mumkin.
cart = ["T-shirt", "Lamp", "Pen"]
result = "Lamp" in cart
print(result) # True
result = "Book" in cart
print(result) # False
Ro'yxat — tartiblangan elementlar ketma-ketligi bo'lgani uchun, for sikli yordamida ro'yxat elementlari bo'ylab aylanib chiqishimiz mumkin.
cart_items = ["T-shirt", "Lamp", "Pen"]
for item in cart_items:
print(item)