Python / Tuple

Tuple

Tuple нь list-тэй маш төстэй — олон утгыг дарааллан хадгалдаг. Гол ялгаа нь tuple өөрчлөгдөхгүй (immutable): нэг удаа үүсгэсний дараа элементийг нэмэх, устгах, өөрчлөх боломжгүй. Энэ хязгаарлалт нь сул тал биш — зарим нөхцөлд давуу тал болдог.

Tuple үүсгэх

python
# Дугуй хаалтаар
координат = (37.5665, 126.9780)
өнгө = (255, 128, 0)

# Хаалтгүйгээр (Python автоматаар tuple гэж таньдаг)
цэг = 10, 20
print(цэг)           # (10, 20)
print(type(цэг))     # <class 'tuple'>

# Нэг элементтэй tuple — таслал шаардлагатай!
ганц = (42,)
print(type(ганц))    # <class 'tuple'>

ганц_биш = (42)
print(type(ганц_биш))  # <class 'int'> — tuple биш!

Элемент унших

Tuple-ийн элементийг list-тэй адил индекс ба slice-р уншина:

python
улирал = ("хавар", "зун", "намар", "өвөл")

print(улирал[0])      # хавар
print(улирал[-1])     # өвөл
print(улирал[1:3])    # ('зун', 'намар')
print(len(улирал))    # 4

# for давталт
for у in улирал:
    print(у)

Tuple өөрчлөгдөхгүй — immutable

python
цэг = (10, 20)

# ❌ Өөрчлөх боломжгүй — TypeError гарна
# цэг[0] = 99

# ❌ Элемент нэмэх боломжгүй
# цэг.append(30)

# ✅ Шинэ tuple үүсгэж болно
шинэ_цэг = (99, 20)
print(шинэ_цэг)   # (99, 20)

Tuple нь мэдлэгийн чухал дохио юм: "Эдгээр утгууд өөрчлөгдөх ёсгүй" гэдгийг хамтран ажиллагсдад, өөртөө ч мэдэгдэнэ.

Unpacking — задлан авах

Tuple-ийн хамгийн тохиромжтой онцлогуудын нэг — элементүүдийг нэгэн зэрэг variable-д хуваарилах:

python
координат = (47.9077, 106.8832)

өргөрөг, уртраг = координат
print(өргөрөг)    # 47.9077
print(уртраг)     # 106.8832

# RGB өнгөний код задлах
улаан, ногоон, хөх = (255, 128, 0)
print(f"R={улаан}, G={ногоон}, B={хөх}")

# Хэрэгцээгүй утгыг _ -р орлуулах
нэр, _, нас = ("Болд", "Улаанбаатар", 25)
print(нэр, нас)   # Болд 25

Функц олон утга буцаахдаа tuple ашигладаг:

python
def хамгийн_их_бага(тоонууд):
    return max(тоонууд), min(тоонууд)    # tuple буцаана

их, бага = хамгийн_их_бага([5, 2, 8, 1, 9])
print(f"Хамгийн их: {их}")     # 9
print(f"Хамгийн бага: {бага}") # 1

Tuple ба list: хэзээ алийг нь сонгох?

| Нөхцөл | Сонголт | | ----------------------------------------- | -------- | | Утгууд өөрчлөгдөхгүй (координат, RGB) | tuple | | Элемент нэмэх, устгах шаардлагатай | list | | Функц олон утга буцаах | tuple | | Хэрэглэгчийн оруулсан мэдээлэл цуглуулах | list | | Dictionary-ийн key болгон ашиглах | tuple | | Өгөгдлийн бүтэц тогтмол байх ёстой | tuple |

python
# Tuple — dictionary-ийн key болгон ашиглаж болно
байршил_мэдээлэл = {
    (47.9077, 106.8832): "Улаанбаатар",
    (51.5074, -0.1278):  "Лондон",
    (35.6762, 139.6503): "Токио",
}

цэг = (47.9077, 106.8832)
print(байршил_мэдээлэл[цэг])    # Улаанбаатар

# ❌ List-ийг key болгон ашиглаж болохгүй — unhashable type алдаа гарна

Tuple методууд

Tuple-д зөвхөн хоёр метод байдаг (өөрчлөхгүй учир):

python
тоонууд = (3, 1, 4, 1, 5, 9, 2, 6, 1)

print(тоонууд.count(1))    # 3 — хэдэн 1 байна
print(тоонууд.index(5))    # 4 — 5-ийн байршил
print(тоонууд.index(1))    # 1 — анхны 1-ийн байршил

Бодит жишээ — RGB өнгөний палитр

python
def өнгө_тодорхойлох(rgb):
    r, g, b = rgb
    if r > g and r > b:
        return "Улаавтар"
    elif g > r and g > b:
        return "Ногоовтор"
    elif b > r and b > g:
        return "Хөхөвтөр"
    else:
        return "Саарал/Цагаан"

палитр = [
    (220, 50, 50),
    (50, 180, 80),
    (60, 100, 210),
    (150, 150, 150),
]

for өнгө in палитр:
    нэр = өнгө_тодорхойлох(өнгө)
    print(f"RGB{өнгө}{нэр}")

Гаралт:

код
RGB(220, 50, 50)    →  Улаавтар
RGB(50, 180, 80)    →  Ногоовтор
RGB(60, 100, 210)   →  Хөхөвтөр
RGB(150, 150, 150)  →  Саарал/Цагаан

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

Tuple-ийн онцлог, ашиглах тохиромжтой үеийг ойлголлоо! Дараа нь dictionary (толь бичиг) — түлхүүр-утга хосоор өгөгдөл хадгалах Python-ийн хамгийн хүчирхэг өгөгдлийн бүтцийг судална.