14 / 59

Python Lists

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'yxatlar elementlarni qo'shish, o'chirish va o'zgartirish imkonini beradi. Xarid savatchasi o'zgarishi mumkin.
  • Ro'yxatdagi elementlar tartiblangan. Xarid savatchasi mahsulotlarni ular qo'shilgan tartibda ko'rsatadi.
  • Ro'yxatlar takrorlanuvchi qiymatlarga ruxsat beradi (garchi bu xarid savatchasi uchun unchalik muhim bo'lmasa ham).

Ro'yxat yaratish

Ro'yxat yaratishning eng keng tarqalgan usuli — elementlarni kvadrat qavslar [] ichiga, vergul bilan ajratib joylashtirish. Masalan,

example.py
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,

example.py
vowels = "aeiou"

# Satrni ro'yxatga aylantirish
vowels_list = list(vowels)
print(vowels_list)

Natija

kod
['a', 'e', 'i', 'o', 'u']

Ro'yxat elementlariga murojaat qilish

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

Python ro'yxat elementlarining indeksi

Ro'yxat elementlariga murojaat qilish uchun shu indekslardan foydalanamiz. Masalan,

example.py
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

kod
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.

example.py
languages = ["Python", "Swift", "C++"]

# Oxirgi elementga murojaat qilish
print('languages[-1] =', languages[-1])

# Oxiridan uchinchi elementga murojaat qilish
print('languages[-3] =', languages[-3]) 

Natija

kod
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.

Elementlarni qo'shish va yangilash

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.

example.py
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.

example.py
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.

example.py
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.

example.py
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

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.

example.py
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.

example.py
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

Ro'yxatni nusxalash

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.

example.py
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

kod
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.

example.py
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

kod
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 ro'yxat metodlari

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:

MetodTavsif
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

len() funksiyasi

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.

example.py
favorite_items = ["T-shirt", "Lamp", "Pen"]

size = len(favorite_items)
print(size)   # 3

Ro'yxatda a'zolikni tekshirish

in kalit so'zi yordamida biror element ro'yxatda mavjud yoki yo'qligini tekshirishimiz mumkin.

example.py
cart = ["T-shirt", "Lamp", "Pen"]

result = "Lamp" in cart
print(result)   # True

result = "Book" in cart
print(result)   # False

Ro'yxat bo'ylab aylanib chiqish

Ro'yxat — tartiblangan elementlar ketma-ketligi bo'lgani uchun, for sikli yordamida ro'yxat elementlari bo'ylab aylanib chiqishimiz mumkin.

example.py
cart_items = ["T-shirt", "Lamp", "Pen"]

for item in cart_items:
    print(item)
QBilimingizni sinab ko'ring
1 / 3

1. Pythonda ro'yxatning birinchi elementining indeksi nechaga teng?