Python / Жагсаалт (List)

Жагсаалт (List)

Программчлалд ганц утга биш, олон утгыг нэгд нь хадгалах шаардлага байнга гардаг — оюутнуудын нэрс, бараа бүтээгдэхүүний үнүүд, сарын температурууд гэх мэт. Python-д үүний тулд list (жагсаалт) ашигладаг. List нь Python-ийн хамгийн их хэрэглэгддэг өгөгдлийн бүтэц юм.

List үүсгэх

python
# Хоосон list
хоосон = []

# Тоонуудын list
тоонууд = [1, 2, 3, 4, 5]

# String-үүдийн list
нэрнүүд = ["Болд", "Сарнай", "Анар", "Төгс"]

# Холимог төрөл (боломжтой ч ховор хэрэглэнэ)
холимог = [42, "Python", True, 3.14]

print(нэрнүүд)          # ['Болд', 'Сарнай', 'Анар', 'Төгс']
print(len(нэрнүүд))     # 4
print(type(нэрнүүд))    # <class 'list'>

Индекс ба элемент авах

List-ийн элемент бүр 0-ээс эхэлж дугаарлагдана. Сүүлийн элементийг -1 индексээр авна:

python
жимснүүд = ["алим", "гүйлс", "үзэм", "тавиу", "нимбэг"]
#             0       1        2       3        4
#            -5      -4       -3      -2       -1

print(жимснүүд[0])     # алим
print(жимснүүд[2])     # үзэм
print(жимснүүд[-1])    # нимбэг — сүүлчийн
print(жимснүүд[-2])    # тавиу — сүүлээс хоёр дахь

Slice — хэсэг авах

Жагсаалтын хэсгийг [эхлэл:төгсгөл:алхам] хэлбэрээр авна:

python
тоонууд = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(тоонууд[2:6])      # [2, 3, 4, 5]   — 2-оос 5 хүртэл
print(тоонууд[:4])       # [0, 1, 2, 3]   — эхнээс 3 хүртэл
print(тоонууд[6:])       # [6, 7, 8, 9]   — 6-аас эцэс хүртэл
print(тоонууд[::2])      # [0, 2, 4, 6, 8] — нэг алгасч
print(тоонууд[::-1])     # [9, 8, ..., 0] — урвуу

Элемент өөрчлөх

List-ийн элементийг индексээр шууд өөрчилж болно — string-ээс ялгаатай нь list өөрчлөгдөх боломжтой (mutable):

python
өнгөнүүд = ["улаан", "шар", "ногоон"]

өнгөнүүд[1] = "хөх"
print(өнгөнүүд)    # ['улаан', 'хөх', 'ногоон']

# Slice-р олон элементийг нэгэн зэрэг солих
өнгөнүүд[0:2] = ["цагаан", "хар"]
print(өнгөнүүд)    # ['цагаан', 'хар', 'ногоон']

for давталт ба list

List-ийн элемент бүрт for давталт ашигладаг:

python
оюутнууд = ["Болд", "Сарнай", "Анар"]

for оюутан in оюутнууд:
    print(f"Сайн уу, {оюутан}!")

# Индекстэй хамт
for i, оюутан in enumerate(оюутнууд, start=1):
    print(f"{i}. {оюутан}")

Шалгалт — in ба not in

python
жимснүүд = ["алим", "гүйлс", "үзэм"]

print("алим" in жимснүүд)       # True
print("тавиу" in жимснүүд)      # False
print("тавиу" not in жимснүүд)  # True

# Практик хэрэглээ
хайсан = "гүйлс"
if хайсан in жимснүүд:
    print(f"{хайсан} байна")
else:
    print(f"{хайсан} байхгүй")

List дотор list (nested list)

python
матриц = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
]

print(матриц[0])       # [1, 2, 3]
print(матриц[1][2])    # 6 — хоёр дахь мөрийн гурав дахь элемент

# Бүх элементийг хэвлэх
for мөр in матриц:
    for элемент in мөр:
        print(элемент, end=" ")
    print()

# 1 2 3
# 4 5 6
# 7 8 9

Бодит жишээ — оноог шинжлэх

python
онооны_жагсаалт = [72, 88, 91, 65, 78, 84, 56, 93]

хамгийн_их = max(онооны_жагсаалт)
хамгийн_бага = min(онооны_жагсаалт)
дундаж = sum(онооны_жагсаалт) / len(онооны_жагсаалт)

тэнцсэн = [оноо for оноо in онооны_жагсаалт if оноо >= 60]

print(f"Нийт оюутан:    {len(онооны_жагсаалт)}")
print(f"Дундаж оноо:    {дундаж:.1f}")
print(f"Хамгийн өндөр: {хамгийн_их}")
print(f"Хамгийн бага:  {хамгийн_бага}")
print(f"Тэнцсэн:       {len(тэнцсэн)}/{len(онооны_жагсаалт)}")

Гаралт:

код
Нийт оюутан:    8
Дундаж оноо:    78.4
Хамгийн өндөр: 93
Хамгийн бага:  56
Тэнцсэн:       7/8

Дараагийн хичээлд:

List үүсгэж, уншиж, өөрчилж сурлаа! Дараа нь list-тэй ажиллах append, remove, sort, pop зэрэг бүх чухал методуудыг практикаар судална.