⏱️ ~11 นาที

List, Dict, Tuple

โครงสร้างข้อมูลแบบกลุ่มที่ใช้บ่อยใน Python

Python มีโครงสร้างข้อมูลกลุ่ม 3 แบบหลัก

ชื่อรูปแบบแก้ไขได้?ใช้ตอนไหน
list[1, 2, 3]✅ ได้ลำดับที่เปลี่ยนแปลงได้
tuple(1, 2, 3)❌ ไม่ได้ลำดับที่คงที่
dict{"a": 1}✅ ได้ข้อมูลแบบ key-value

1. List — ใช้บ่อยที่สุด

fruits = ["แอปเปิ้ล", "กล้วย", "ส้ม"]
numbers = [10, 20, 30]
mixed = [1, "hello", True]      # ผสมชนิดได้
empty = []

อ่านค่า (index เริ่มที่ 0)

fruits = ["แอปเปิ้ล", "กล้วย", "ส้ม"]
print(fruits[0])        # แอปเปิ้ล
print(fruits[-1])       # ส้ม (ตัวสุดท้าย! Python มี index ลบ)

💡 Python มี index ลบ[-1] คือตัวสุดท้าย, [-2] คือรองสุดท้าย

เปลี่ยน / เพิ่ม / ลด

fruits = ["แอปเปิ้ล", "กล้วย"]

fruits[0] = "มะม่วง"          # เปลี่ยน
fruits.append("ส้ม")           # เพิ่มท้าย
fruits.insert(0, "ทุเรียน")    # แทรกที่ index 0
fruits.remove("กล้วย")         # ลบตามค่า
last = fruits.pop()            # เอาออกท้าย แล้วคืนค่า

print(len(fruits))             # จำนวนสมาชิก

วนลูป

for fruit in fruits:
    print(fruit)

เมธอดที่ใช้บ่อย

numbers = [3, 1, 4, 1, 5, 9]

print(sum(numbers))      # 23  รวม
print(max(numbers))      # 9   มากสุด
print(min(numbers))      # 1   น้อยสุด
print(sorted(numbers))   # [1, 1, 3, 4, 5, 9] (สร้างใหม่)
numbers.sort()           # เรียงในตัว (ไม่คืนค่า)
numbers.reverse()        # กลับด้าน

2. List Comprehension (เท่และกระชับ)

วิธีสร้าง list ใหม่จาก list เดิมในบรรทัดเดียว:

# แบบเดิม
squares = []
for n in range(5):
    squares.append(n * n)
# [0, 1, 4, 9, 16]

# แบบ comprehension (สั้นกว่า)
squares = [n * n for n in range(5)]

มีเงื่อนไขได้ด้วย:

evens = [n for n in range(10) if n % 2 == 0]
# [0, 2, 4, 6, 8]

💡 Pythonista ทุกคนใช้ — ลองฝึกทำให้คล่อง

3. Tuple — ลำดับที่แก้ไม่ได้

point = (10, 20)
rgb = (255, 128, 0)

print(point[0])     # 10
# point[0] = 5      # ❌ Error! แก้ไม่ได้

ใช้ตอนข้อมูล คงที่ เช่น พิกัด, วันเกิด หรือคืนหลายค่าจากฟังก์ชัน:

def get_user():
    return ("อร", 25)      # คืนเป็น tuple

name, age = get_user()     # แกะออก (unpacking)

4. Dict — คู่ key:value (เหมือน Object ใน JS)

user = {
    "name": "สมชาย",
    "age": 25,
    "is_admin": True
}

อ่านค่า

print(user["name"])           # สมชาย
print(user.get("email"))      # None (ไม่ error ถ้าไม่มี key)
print(user.get("email", "-")) # - (ค่าเริ่มต้น)

เพิ่ม/เปลี่ยน

user["age"] = 26              # เปลี่ยน
user["email"] = "a@b.com"     # เพิ่ม

ลบ

del user["email"]
user.pop("is_admin")

วนลูป

for key in user:
    print(key, user[key])

for key, value in user.items():
    print(f"{key} = {value}")

💡 .items() ใช้เมื่อต้องการทั้ง key และ value .keys() เอาแค่ key, .values() เอาแค่ value

List ของ Dict (ใช้บ่อยมากในงานจริง!)

products = [
    {"name": "กาแฟ", "price": 80},
    {"name": "ชา", "price": 60},
    {"name": "โก๊ะ", "price": 50}
]

# หาราคารวม
total = sum(p["price"] for p in products)
print(total)            # 190

# หาราคาต่ำกว่า 70
cheap = [p for p in products if p["price"] < 70]
print(cheap)

ลองทำจริง

students = [
    {"name": "อร", "score": 85},
    {"name": "บอย", "score": 60},
    {"name": "เชียร์", "score": 92}
]

# หาค่าเฉลี่ย
avg = sum(s["score"] for s in students) / len(students)
print(f"ค่าเฉลี่ย: {avg}")

# หาคนที่ผ่าน (>= 70)
passed = [s["name"] for s in students if s["score"] >= 70]
print(f"ผ่าน: {passed}")

สรุป

โครงสร้างเขียนใช้ตอนไหน
list[...]ลำดับที่แก้ไขได้
tuple(...)ลำดับที่คงที่
dict{k: v}ข้อมูลแบบมีชื่อ (key)
comprehension[x for x in ...]สร้าง list แบบสั้น

จบโมดูลพื้นฐาน Python! บทหน้า: ไปฝั่ง Backend ด้วย FastAPI 🚀

อ่านจบแล้ว? ทำเครื่องหมายว่าเสร็จเพื่อบันทึกความคืบหน้า

🧠

แบบทดสอบ

ตอบให้ครบแล้วกด “ตรวจคำตอบ” เพื่อเช็คความเข้าใจ

  1. 1. List ใน Python เขียนอยู่ในวงเล็บใด?

  2. 2. Dict (ดิกชันนารี) เก็บข้อมูลในรูปแบบใด?

  3. 3. ความต่างของ tuple กับ list คือ?

กำลังโหลด…