เรียนรู้การเก็บและจัดการข้อมูลหลายๆ ตัวในตัวแปรเดียว
• เข้าใจแนวคิดของ List และการใช้งาน
• สร้าง เข้าถึง และแก้ไขข้อมูลใน List
• ใช้ Method ต่างๆ ของ List
• ประยุกต์ List กับ Loop ในการแก้ปัญหา
• คล้าย "ตะกร้า" ที่เก็บของหลายชิ้นไว้ด้วยกัน
• ใช้เก็บข้อมูลที่ต้องการจัดกลุ่ม เช่น ["กล้วย", "ส้ม", "แตงโม"]
• แต่ละชิ้นใน list เรียกว่า "สมาชิก" (element)
friend1 = "สมชาย" friend2 = "สมหญิง" friend3 = "สมศักดิ์" friend4 = "สมใจ" friend5 = "สมพร"
friends = ["สมชาย", "สมหญิง", "สมศักดิ์", "สมใจ", "สมพร"]
# การสร้าง List ประเภทต่างๆ numbers = [10, 20, 30, 40, 50] scores = [85.5, 92.0, 78.5] status = [True, False, True] mixed = ["สมชาย", 16, 165.5, True]
เลข [1, 2, 3]
ข้อความ ["แมว", "หมา"]
ผสมกัน ["A", 100, True]
scores = [90, 88, 75] print(scores)
Python นับเริ่มจาก 0 และสามารถนับย้อนกลับได้
# รายชื่อนักเรียน students = ["อานนท์", "บุญมี", "จิรา", "ดารา", "เอก"] # Index: 0 1 2 3 4 # Index: -5 -4 -3 -2 -1 # การเข้าถึงแบบปกติ (เริ่มจาก 0) print(students[0]) # "อานนท์" print(students[2]) # "จิรา" print(students[4]) # "เอก" # การเข้าถึงแบบย้อนกลับ (เริ่มจาก -1) print(students[-1]) # "เอก" (คนสุดท้าย) print(students[-2]) # "ดารา" (คนรองสุดท้าย)
len(students) # 5
students[1:4] # บุญมี,จิรา,ดารา
students[0] # ตัวแรก students[-1] # ตัวสุดท้าย
"จิรา" in students # True
สามารถเพิ่ม ลบ หรือแก้ไขข้อมูลใน List ได้
# สร้าง List เริ่มต้น fruits = ["แอปเปิ้ล", "กล้วย", "ส้ม"] print("เริ่มต้น:", fruits) # การแก้ไขข้อมูล fruits[1] = "มะม่วง" print("แก้ไขแล้ว:", fruits) # การเพิ่มข้อมูล fruits.append("องุ่น") # เพิ่มท้าย List fruits.insert(1, "สับปะรด") # แทรกตำแหน่งที่ 1 print("เพิ่มแล้ว:", fruits) # การลบข้อมูล fruits.remove("ส้ม") # ลบตามค่า deleted = fruits.pop() # ลบตัวสุดท้าย print("ลบแล้ว:", fruits) print("ที่ถูกลบ:", deleted)
สร้าง List ชื่อ colors ใส่สี 3 สี แล้วลองเพิ่มและลบสี
numbers = [1, 2, 3] numbers.append(4) # [1, 2, 3, 4]
numbers.insert(1, 1.5) # [1, 1.5, 2, 3, 4]
numbers.remove(1.5) # [1, 2, 3, 4]
last = numbers.pop() # last = 4, numbers = [1,2,3]
# Methods อื่นๆ ที่มีประโยชน์ scores = [85, 92, 78, 96, 88] # การเรียงลำดับ scores.sort() # เรียงจากน้อยไปมาก print("เรียงแล้ว:", scores) # [78, 85, 88, 92, 96] scores.reverse() # กลับลำดับ print("กลับลำดับ:", scores) # [96, 92, 88, 85, 78] # การค้นหา position = scores.index(92) # หาตำแหน่งของ 92 count = scores.count(88) # นับจำนวน 88 # การล้างข้อมูล scores.clear() # ลบทุกตัว print("ล้างแล้ว:", scores) # []
List และ Loop ทำงานร่วมกันได้ดีมาก เหมาะสำหรับการประมวลผลข้อมูลจำนวนมาก
# วิธีที่ 1: วนซ้ำโดยตรง (แนะนำ) subjects = ["คณิต", "วิทย์", "อังกฤษ", "สังคม"] for subject in subjects: print(f"วิชา: {subject}") # วิธีที่ 2: ใช้ index for i in range(len(subjects)): print(f"ลำดับ {i+1}: {subjects[i]}") # วิธีที่ 3: ใช้ enumerate (ได้ทั้ง index และ value) for i, subject in enumerate(subjects): print(f"{i+1}. {subject}")
# ตัวอย่างการใช้งานจริง: คำนวณคะแนนเฉลี่ย scores = [85, 92, 78, 96, 88] total = 0 for score in scores: total += score average = total / len(scores) print(f"คะแนนเฉลี่ย: {average:.2f}")
for item in list:
เมื่อต้องการแค่ค่า ใช้
enumerate()
เมื่อต้องการทั้งตำแหน่งและค่า
เป็นวิธีการเขียนโค้ดแบบย่อที่ Python มีเฉพาะ ช่วยลดการเขียน Loop ยาวๆ
# สร้าง List กำลังสอง numbers = [1, 2, 3, 4, 5] squares = [] for num in numbers: squares.append(num ** 2) print(squares) # [1, 4, 9, 16, 25]
# สร้าง List กำลังสอง numbers = [1, 2, 3, 4, 5] squares = [num ** 2 for num in numbers] print(squares) # [1, 4, 9, 16, 25]
# ตัวอย่างอื่นๆ ของ List Comprehension # สร้าง List เลขคู่ even_numbers = [i for i in range(1, 11) if i % 2 == 0] print(even_numbers) # [2, 4, 6, 8, 10] # แปลง String เป็นตัวพิมพ์ใหญ่ names = ["อานนท์", "บุญมี", "จิรา"] upper_names = [name.upper() for name in names] print(upper_names) # สร้าง List คะแนนที่ผ่าน all_scores = [45, 67, 89, 34, 78, 92] passed_scores = [score for score in all_scores if score >= 50] print(passed_scores) # [67, 89, 78, 92]
[expression for item in list if condition]
list สามารถมีสมาชิกเป็น list ได้ เช่น ตารางคะแนน
scores = [ [80, 90, 85], [70, 88, 95] ] print(scores[0]) # [80, 90, 85] print(scores[1][2]) # 95
แล้วแสดงผลแต่ละชื่อในแต่ละบรรทัด
แล้วหาค่าเฉลี่ยคะแนน
แล้วแสดงคะแนนของแต่ละคนในแต่ละวิชา