⏱️ ~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. List ใน Python เขียนอยู่ในวงเล็บใด?
2. Dict (ดิกชันนารี) เก็บข้อมูลในรูปแบบใด?
3. ความต่างของ tuple กับ list คือ?
กำลังโหลด…