บทที่ 5: โครงสร้างข้อมูลใน Python
1. โครงสร้างข้อมูลคืออะไร?
โครงสร้างข้อมูล (Data Structures) คือ วิธีการจัดเก็บและจัดการข้อมูล ในโปรแกรมให้สามารถเรียกใช้ได้ง่ายขึ้น ในภาษา Python มีโครงสร้างข้อมูลที่สำคัญ เช่น list
, tuple
, และ dictionary
2. List (รายการ)
list
เป็น กลุ่มของข้อมูลที่สามารถเปลี่ยนแปลงได้ และสามารถเก็บข้อมูลได้หลายประเภทในรายการเดียวกัน
ตัวอย่างการใช้ list
# รายชื่อนักเรียน
students = ["เอ", "บี", "ซี", "ดี"]
# เข้าถึงข้อมูลใน list
print(students[0]) # "เอ"
print(students[2]) # "ซี"
# เพิ่มข้อมูล
students.append("อี")
print(students) # ["เอ", "บี", "ซี", "ดี", "อี"]
graph TD; A(เริ่มต้น) --> B(สร้าง list ชื่อนักเรียน); B --> C(เพิ่มชื่อใหม่ใน list); C --> D(พิมพ์รายชื่อ); D --> E(จบ);
3. Tuple (กลุ่มข้อมูลที่ไม่เปลี่ยนแปลง)
tuple
คล้ายกับ list
แต่ ไม่สามารถเปลี่ยนแปลงค่าได้ เหมาะสำหรับข้อมูลที่ต้องการให้คงที่
ตัวอย่างการใช้ tuple
# วันในสัปดาห์ (ไม่เปลี่ยนแปลง)
days = ("จันทร์", "อังคาร", "พุธ", "พฤหัสบดี", "ศุกร์", "เสาร์", "อาทิตย์")
# เข้าถึงข้อมูล
print(days[0]) # "จันทร์"
print(days[-1]) # "อาทิตย์"
graph TD; A(เริ่มต้น) --> B(สร้าง tuple วันในสัปดาห์); B --> C(เข้าถึงข้อมูล); C --> D(แสดงค่า); D --> E(จบ);
4. Dictionary (พจนานุกรมข้อมูล)
dictionary
ใช้ คู่ของคีย์ (key) และค่า (value) เพื่อเก็บข้อมูล
ตัวอย่างการใช้ dictionary
# เก็บข้อมูลนักเรียน (เลขที่ -> ชื่อ)
students = {
1: "เอ",
2: "บี",
3: "ซี",
4: "ดี"
}
# เข้าถึงข้อมูล
print(students[2]) # "บี"
# เพิ่มข้อมูล
students[5] = "อี"
print(students)
graph TD; A(เริ่มต้น) --> B(สร้าง dictionary นักเรียน); B --> C(เข้าถึงข้อมูลด้วย key); C --> D(เพิ่มข้อมูลใหม่); D --> E(จบ);
5. โปรแกรมเก็บข้อมูลนักเรียนใน dictionary
และ list
students = [
{"เลขที่": 1, "ชื่อ": "เอ", "เกรด": 3.5},
{"เลขที่": 2, "ชื่อ": "บี", "เกรด": 3.8},
{"เลขที่": 3, "ชื่อ": "ซี", "เกรด": 4.0}
]
# แสดงข้อมูล
for student in students:
print(f"เลขที่ {student['เลขที่']}: {student['ชื่อ']} - เกรด {student['เกรด']}")
graph TD; A(เริ่มต้น) --> B(สร้าง list ของ dictionary); B --> C(วนลูปเพื่อแสดงข้อมูล); C --> D(จบ);
6. โปรแกรมค้นหาชื่อนักเรียนจากเลขที่
students = {
1: "เอ",
2: "บี",
3: "ซี",
4: "ดี"
}
# รับเลขที่จากผู้ใช้
num = int(input("กรุณาใส่เลขที่นักเรียน: "))
# ค้นหานักเรียน
if num in students:
print(f"นักเรียนเลขที่ {num} คือ {students[num]}")
else:
print("ไม่พบนักเรียน")
graph TD; A(เริ่มต้น) --> B(รับเลขที่นักเรียน); B --> C(ตรวจสอบว่ามีใน dictionary หรือไม่); C -->|มี| D(แสดงชื่อนักเรียน); C -->|ไม่มี| E(แจ้งว่าไม่พบ); D --> F(จบ); E --> F;
โจทย์ท้ายบท
- สร้าง
list
ของผลไม้ ที่มี "กล้วย", "แอปเปิล", "ส้ม" และเพิ่ม "มะม่วง" ลงไป แล้วพิมพ์ผลลัพธ์ - เขียน
tuple
ของสีรุ้ง ที่ประกอบด้วยสี 7 สี แล้วพิมพ์สีที่อยู่ตำแหน่งที่ 3 - สร้าง
dictionary
ของคะแนนสอบ โดยมีนักเรียน 3 คน (ใช้เลขที่เป็น key และคะแนนเป็น value) แล้วเพิ่มนักเรียนใหม่เข้าไป - เขียนโปรแกรมที่รับเลขที่นักเรียน แล้วแสดงชื่อของนักเรียนคนนั้น (ใช้
dictionary
) - เขียนโปรแกรมที่รับค่าชื่อจากผู้ใช้ แล้วตรวจสอบว่ามีอยู่ใน
list
หรือไม่ ถ้ามีให้พิมพ์ "พบชื่อนี้" ถ้าไม่มีให้พิมพ์ "ไม่พบชื่อนี้"