มาสเตอร์คอลเลกชันของ Python! คู่มือฉบับสมบูรณ์เกี่ยวกับลิสต์และดิกชันนารี
หากต้องการเรียกใช้ Python ผ่าน Command Prompt หรือ PowerShell บนคอมพิวเตอร์ของคุณ คุณจำเป็นต้องดาวน์โหลดและติดตั้ง Python ก่อน
หากคุณยังไม่ได้ติดตั้ง กรุณาดูบทความ การติดตั้ง Python และการตั้งค่าสภาพแวดล้อมการพัฒนา เพื่อทำการติดตั้ง Python
ในการสร้างเว็บไซต์และการพัฒนาแอปพลิเคชัน มีหลายครั้งที่คุณต้องการจัดการข้อมูลจำนวนมากอย่างมีประสิทธิภาพใช่ไหมครับ? ตัวอย่างเช่น รายการบทความในบล็อก, รายการสินค้าในเว็บไซต์ E-commerce, หรือข้อมูลผู้ใช้ ทั้งหมดนี้คือ "ชุดข้อมูล" ทั้งสิ้น ใน Python มีกลไกที่มีประสิทธิภาพสำหรับจัดการชุดข้อมูลเหล่านี้อย่างชาญฉลาด เรียกว่า "คอลเลกชัน (Collection)" ครับ
ในบทความนี้ เราจะเน้นไปที่ "ลิสต์ (List)" และ "ดิกชันนารี (Dictionary)" ซึ่งเป็นคอลเลกชันที่สำคัญที่สุดใน Python พร้อมอธิบายตั้งแต่พื้นฐานไปจนถึงการประยุกต์ใช้ด้วยตัวอย่างโค้ดที่สามารถคัดลอกไปใช้แล้วทำงานได้ทันที เพื่อให้แม้แต่ Web Creator มือใหม่ก็สามารถเข้าใจได้ง่าย มาเพิ่มระดับทักษะการจัดการข้อมูลของคุณไปพร้อมๆ กัน ด้วยการทดลองโค้dที่ 'ใช้งานได้จริง' กันเถอะ!
1. 'ลิสต์' (List): การจัดเรียงข้อมูลตามลำดับ
สิ่งแรกที่เราจะเรียนรู้คือ "ลิสต์" ครับ ลิสต์เป็นคอลเลกชันพื้นฐานที่สุดที่ช่วยให้คุณจัดเก็บข้อมูลหลายๆ ตัวเรียงตามลำดับได้ ตามชื่อเลยครับ มันเหมาะสำหรับการจัดการข้อมูลที่ลำดับมีความสำคัญ เช่น รายการซื้อของ หรือ ToDo List ในการสร้างเว็บ มันมีประโยชน์ในการจัดการรายการเมนู, รายการแท็กของบทความบล็อก, หรือรายการชื่อไฟล์ในแกลเลอรีรูปภาพครับ
วิธีสร้างลิสต์
การสร้างลิสต์นั้นง่ายมาก เพียงแค่ล้อมรอบข้อมูลด้วยวงเล็บเหลี่ยม [] และคั่นแต่ละข้อมูลด้วยเครื่องหมายจุลภาค , คุณสามารถใส่ได้ทั้งตัวเลข, สตริง, หรือแม้กระทั่งลิสต์ซ้อนลิสต์ก็ยังได้ครับ
# สร้างลิสต์ของสตริง
fruits = ["แอปเปิ้ล", "กล้วย", "ส้ม"]
print(fruits)
# สร้างลิสต์ของตัวเลข
numbers = [1, 2, 3, 4, 5]
print(numbers)
# สามารถผสมข้อมูลต่างชนิดกันได้
mixed_list = [1, "สวัสดี", True, 3.14]
print(mixed_list)
ผลลัพธ์การทำงาน:
['แอปเปิ้ล', 'กล้วย', 'ส้ม']
[1, 2, 3, 4, 5]
[1, 'สวัสดี', True, 3.14]
การเข้าถึงองค์ประกอบ (Index)
ในการดึงข้อมูลเฉพาะ (องค์ประกอบ) ออกมาจากลิสต์ เราจะใช้หมายเลขที่เรียกว่า "อินเด็กซ์ (Index)" ข้อควรจำคือ อินเด็กซ์จะเริ่มนับจาก 0 องค์ประกอบตัวแรกคือ [0], ตัวที่สองคือ [1] ไปเรื่อยๆ ครับ
fruits = ["แอปเปิ้ล", "กล้วย", "ส้ม"]
# ดึงองค์ประกอบตัวแรก (อินเด็กซ์ 0)
first_fruit = fruits[0]
print(f"ผลไม้ชนิดแรก: {first_fruit}")
# ดึงองค์ประกอบตัวที่สาม (อินเด็กซ์ 2)
third_fruit = fruits[2]
print(f"ผลไม้ชนิดที่สาม: {third_fruit}")
ผลลัพธ์การทำงาน:
ผลไม้ชนิดแรก: แอปเปิ้ล
ผลไม้ชนิดที่สาม: ส้ม
การเพิ่มองค์ประกอบ (append)
หากต้องการเพิ่มองค์ประกอบใหม่ต่อท้ายลิสต์ ให้ใช้เมธอด append() ซึ่งเปรียบเสมือนการเพิ่มบทความใหม่เข้าไปท้ายสุดของรายการบล็อกครับ
fruits = ["แอปเปิ้ล", "กล้วย", "ส้ม"]
print(f"ก่อนเพิ่ม: {fruits}")
# เพิ่ม "องุ่น" ต่อท้ายลิสต์
fruits.append("องุ่น")
print(f"หลังเพิ่ม: {fruits}")
ผลลัพธ์การทำงาน:
ก่อนเพิ่ม: ['แอปเปิ้ล', 'กล้วย', 'ส้ม']
หลังเพิ่ม: ['แอปเปิ้ล', 'กล้วย', 'ส้ม', 'องุ่น']
การแก้ไของค์ประกอบ
คุณยังสามารถระบุอินเด็กซ์เพื่อแก้ไขค่าขององค์ประกอบที่มีอยู่เป็นค่าใหม่ได้อีกด้วย
fruits = ["แอปเปิ้ล", "กล้วย", "ส้ม"]
print(f"ก่อนแก้ไข: {fruits}")
# แก้ไของค์ประกอบตัวที่สอง (อินเด็กซ์ 1) เป็น "กีวี"
fruits[1] = "กีวี"
print(f"หลังแก้ไข: {fruits}")
ผลลัพธ์การทำงาน:
ก่อนแก้ไข: ['แอปเปิ้ล', 'กล้วย', 'ส้ม']
หลังแก้ไข: ['แอปเปิ้ล', 'กีวี', 'ส้ม']
การลบองค์ประกอบ (del)
หากต้องการลบองค์ประกอบโดยระบุอินเด็กซ์ ให้ใช้คำสั่ง del ครับ
fruits = ["แอปเปิ้ล", "กล้วย", "ส้ม", "องุ่น"]
print(f"ก่อนลบ: {fruits}")
# ลบองค์ประกอบตัวที่สาม (อินเด็กซ์ 2)
del fruits[2]
print(f"หลังลบ: {fruits}")
ผลลัพธ์การทำงาน:
ก่อนลบ: ['แอปเปิ้ล', 'กล้วย', 'ส้ม', 'องุ่น']
หลังลบ: ['แอปเปิ้ล', 'กล้วย', 'องุ่น']
การตรวจสอบความยาวของลิสต์ (len)
หากต้องการทราบว่าในลิสต์มีองค์ประกอบกี่ตัว ฟังก์ชัน len() จะมีประโยชน์มากครับ สามารถใช้เพื่อนับจำนวนบทความทั้งหมดในบล็อก เป็นต้น
fruits = ["แอปเปิ้ล", "กล้วย", "ส้ม", "องุ่น"]
item_count = len(fruits)
print(f"ในลิสต์มีองค์ประกอบทั้งหมด {item_count} รายการ")
ผลลัพธ์การทำงาน:
ในลิสต์มีองค์ประกอบทั้งหมด 4 รายการ
2. 'ดิกชันนารี' (Dictionary): การจัดการด้วยคีย์และค่า
"ดิกชันนารี" ที่จะแนะนำต่อไปนี้ เป็นโครงสร้างข้อมูลที่ทรงพลังอย่างยิ่งและถูกใช้บ่อยมากในการพัฒนาเว็บ ในขณะที่ลิสต์จัดการข้อมูลด้วยหมายเลข (อินเด็กซ์) ดิกชันนารีจะจัดการข้อมูลเป็นคู่ๆ ด้วยชื่อที่เรียกว่า "คีย์ (Key)" และ "ค่า (Value)" ที่สอดคล้องกัน
มันเหมือนกับสมุดโทรศัพท์ที่จับคู่ระหว่างชื่อคน (คีย์) กับเบอร์โทรศัพท์ (ค่า) เหมาะสำหรับกรณีที่ไม่สนใจลำดับ แต่ต้องการเข้าถึงค่าที่ต้องการได้อย่างรวดเร็วผ่านคีย์ เหมาะอย่างยิ่งสำหรับการจัดการข้อมูลสมาชิกเว็บไซต์ (ชื่อผู้ใช้: "สมชาย", อายุ: 25...) หรือข้อมูลการตั้งค่า (สีธีม: "#333", ขนาดตัวอักษร: "16px"...)
วิธีสร้างดิกชันนารี
ดิกชันนารีสร้างโดยใช้วงเล็บปีกกา {} และเขียนคู่ของ คีย์: ค่า คั่นด้วยเครื่องหมายจุลภาค , โดยปกติแล้วจะใช้สตริงเป็นคีย์
# สร้างข้อมูลผู้ใช้ด้วยดิกชันนารี
user = {
"name": "สมชาย ใจดี",
"age": 30,
"email": "somchai@example.com",
"is_admin": False
}
print(user)
ผลลัพธ์การทำงาน:
{'name': 'สมชาย ใจดี', 'age': 30, 'email': 'somchai@example.com', 'is_admin': False}
การเข้าถึงค่า (ด้วยคีย์)
ในการดึงค่าออกจากดิกชันนารี เราจะใช้ "คีย์" แทนอินเด็กซ์ของลิสต์ โดยเขียนในรูปแบบ ชื่อดิกชันนารี[คีย์]
user = {
"name": "สมชาย ใจดี",
"age": 30,
"email": "somchai@example.com"
}
# ดึงค่าที่สอดคล้องกับคีย์ "name"
user_name = user["name"]
print(f"ชื่อผู้ใช้: {user_name}")
# ดึงค่าที่สอดคล้องกับคีย์ "age"
user_age = user["age"]
print(f"อายุ: {user_age}")
ผลลัพธ์การทำงาน:
ชื่อผู้ใช้: สมชาย ใจดี
อายุ: 30
การเพิ่มและอัปเดตค่า
การเพิ่มคู่คีย์-ค่าใหม่เข้าไปในดิกชันนารี หรือการอัปเดตค่าของคีย์ที่มีอยู่แล้วนั้นทำได้ง่ายมาก หากระบุคีย์ใหม่แล้วกำหนดค่าจะเป็นการเพิ่ม แต่ถ้าระบุคีย์ที่มีอยู่แล้วจะเป็นการอัปเดตครับ
user = {
"name": "สมชาย ใจดี",
"age": 30
}
print(f"ก่อนดำเนินการ: {user}")
# เพิ่มคีย์ใหม่ "city"
user["city"] = "กรุงเทพฯ"
print(f"หลังเพิ่ม: {user}")
# อัปเดตค่าของคีย์ "age" ที่มีอยู่
user["age"] = 31
print(f"หลังอัปเดต: {user}")
ผลลัพธ์การทำงาน:
ก่อนดำเนินการ: {'name': 'สมชาย ใจดี', 'age': 30}
หลังเพิ่ม: {'name': 'สมชาย ใจดี', 'age': 30, 'city': 'กรุงเทพฯ'}
หลังอัปเดต: {'name': 'สมชาย ใจดี', 'age': 31, 'city': 'กรุงเทพฯ'}
การลบองค์ประกอบ (del)
เช่นเดียวกับลิสต์ คุณสามารถใช้คำสั่ง del ร่วมกับคีย์เพื่อลบคู่คีย์-ค่าที่ต้องการได้
user = {
"name": "สมชาย ใจดี",
"age": 30,
"email": "somchai@example.com"
}
print(f"ก่อนลบ: {user}")
# ลบคีย์ "email" และค่าที่สอดคล้องกัน
del user["email"]
print(f"หลังลบ: {user}")
ผลลัพธ์การทำงาน:
ก่อนลบ: {'name': 'สมชาย ใจดี', 'age': 30, 'email': 'somchai@example.com'}
หลังลบ: {'name': 'สมชาย ใจดี', 'age': 30}
การดึงรายการคีย์หรือค่า
หากคุณต้องการดึงรายการคีย์ทั้งหมด หรือค่าทั้งหมดในดิกชันนารี เมธอดอย่าง keys(), values(), และ items() จะมีประโยชน์มากครับ
user = {
"name": "สมชาย ใจดี",
"age": 30,
"city": "กรุงเทพฯ"
}
# ดึงคีย์ทั้งหมด
print(f"รายการคีย์: {user.keys()}")
# ดึงค่าทั้งหมด
print(f"รายการค่า: {user.values()}")
# ดึงคู่คีย์-ค่าทั้งหมดเป็นลิสต์ของ tuple
print(f"คู่คีย์-ค่า: {user.items()}")
ผลลัพธ์การทำงาน:
รายการคีย์: dict_keys(['name', 'age', 'city'])
รายการค่า: dict_values(['สมชาย ใจดี', 30, 'กรุงเทพฯ'])
คู่คีย์-ค่า: dict_items([('name', 'สมชาย ใจดี'), ('age', 30), ('city', 'กรุงเทพฯ')])
3. การประยุกต์ใช้: สร้างหน้ารายการสินค้าแบบไดนามิกด้วย Python!
เมื่อนำลิสต์และดิกชันนารีที่เรียนมาผสมผสานกัน จะสามารถสร้างการทำงานที่ใช้งานได้จริงอย่างมากครับ ในส่วนนี้ เราจะมาดูตัวอย่างการจัดการรายการสินค้าของเว็บไซต์ E-commerce ด้วย Python และสร้าง HTML จากข้อมูลนั้นโดยอัตโนมัติ ซึ่งนี่คือแนวคิดพื้นฐานที่เว็บเฟรมเวิร์ก (เช่น Django หรือ Flask) ใช้ทำงานอยู่เบื้องหลัง
ขั้นแรก เราจะกำหนดข้อมูลสินค้าใน Python ในรูปแบบ "ลิสต์ของดิกชันนารี" โดยแต่ละสินค้าจะเป็นดิกชันนารีหนึ่งตัว ซึ่งข้างในจะประกอบด้วยข้อมูลอย่างชื่อสินค้า, ราคา, และชื่อไฟล์รูปภาพครับ
<!-- นี่คือตัวอย่างโค้ด Python ที่จะทำงานบนเว็บเซิร์ฟเวอร์เพื่อสร้าง HTML ด้านล่าง -->
#
# import html
#
# # ลิสต์ของข้อมูลสินค้า (แต่ละสินค้าคือดิกชันนารี)
# products = [
# {
# "name": "เสื้อยืดผ้าฝ้ายออร์แกนิก",
# "price": 450,
# "image": "tshirt.jpg",
# "description": "เสื้อยืดผ้าฝ้ายออร์แกนิก 100% สัมผัสนุ่มสบาย"
# },
# {
# "name": "รองเท้าผ้าใบแคนวาส",
# "price": 820,
# "image": "sneakers.jpg",
# "description": "รองเท้าผ้าใบแคนวาสสุดคลาสสิกที่เข้ากับทุกสไตล์"
# },
# {
# "name": "กระเป๋าเป้หนัง",
# "price": 1980,
# "image": "backpack.jpg",
# "description": "กระเป๋าเป้หนังแท้ ยิ่งใช้ยิ่งมีเสน่ห์"
# }
# ]
#
# # สร้าง HTML
# html_content = ""
# for product in products:
# # อย่าลืม escape HTML
# name_esc = html.escape(product["name"])
# desc_esc = html.escape(product["description"])
# img_esc = html.escape(product["image"])
#
# html_content += f"""
# <div class="product-card">
# <img src="images/{img_esc}" alt="{name_esc}">
# <h3>{name_esc}</h3>
# <p class="price">฿{product['price']:,}</p>
# <p>{desc_esc}</p>
# </div>
# """
#
# # นำ html_content นี้ไปเขียนลงไฟล์ หรือส่งต่อไปยังเทมเพลตของเว็บเฟรมเวิร์ก
# # print(html_content)
#
เมื่อรันโค้ด Python ด้านบน จะได้ผลลัพธ์เป็นโค้ด HTML ดังต่อไปนี้ครับ เมื่อเปิดในเบราว์เซอร์ก็จะแสดงรายการสินค้าขึ้นมา แนวคิดเรื่อง "การแยกข้อมูลออกจากหน้าตา" นี้เป็นกุญแจสำคัญของการสร้างเว็บอย่างมีประสิทธิภาพ
👇ตัวอย่าง HTML ที่ทำงานได้สมบูรณ์👇
คัดลอกโค้ดด้านล่างไปบันทึกเป็นไฟล์ชื่อ products.html แล้วลองเปิดในเบราว์เซอร์ดูนะครับ (※ รูปภาพจะไม่แสดง แต่สามารถตรวจสอบเลย์เอาต์ได้)
<!DOCTYPE html>
<html lang="th">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>รายการสินค้า</title>
<style>
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
background-color: #f4f7f6;
color: #333;
margin: 0;
padding: 2rem;
}
.container {
max-width: 1200px;
margin: 0 auto;
}
h1 {
text-align: center;
color: #2c3e50;
margin-bottom: 2rem;
}
.product-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
}
.product-card {
background-color: #fff;
border-radius: 8px;
box-shadow: 0 4px 15px rgba(0,0,0,0.1);
overflow: hidden;
transition: transform 0.3s, box-shadow 0.3s;
}
.product-card:hover {
transform: translateY(-5px);
box-shadow: 0 8px 25px rgba(0,0,0,0.15);
}
.product-card img {
width: 100%;
height: 200px;
object-fit: cover;
background-color: #eee;
}
.product-card h3 {
font-size: 1.25rem;
margin: 1rem 1.5rem 0.5rem;
color: #34495e;
}
.product-card .price {
font-size: 1.2rem;
font-weight: bold;
color: #e74c3c;
margin: 0 1.5rem;
}
.product-card p {
font-size: 0.95rem;
line-height: 1.6;
margin: 0.5rem 1.5rem 1.5rem;
color: #7f8c8d;
}
</style>
</head>
<body>
<div class="container">
<h1>สินค้าแนะนำ</h1>
<div class="product-grid">
<div class="product-card">
<img src="images/tshirt.jpg" alt="เสื้อยืดผ้าฝ้ายออร์แกนิก">
<h3>เสื้อยืดผ้าฝ้ายออร์แกนิก</h3>
<p class="price">฿450</p>
<p>เสื้อยืดผ้าฝ้ายออร์แกนิก 100% สัมผัสนุ่มสบาย</p>
</div>
<div class="product-card">
<img src="images/sneakers.jpg" alt="รองเท้าผ้าใบแคนวาส">
<h3>รองเท้าผ้าใบแคนวาส</h3>
<p class="price">฿820</p>
<p>รองเท้าผ้าใบแคนวาสสุดคลาสสิกที่เข้ากับทุกสไตล์</p>
</div>
<div class="product-card">
<img src="images/backpack.jpg" alt="กระเป๋าเป้หนัง">
<h3>กระเป๋าเป้หนัง</h3>
<p class="price">฿1,980</p>
<p>กระเป๋าเป้หนังแท้ ยิ่งใช้ยิ่งมีเสน่ห์</p>
</div>
</div>
</div>
</body>
</html>
4. เคล็ดลับที่จะสร้างความแตกต่าง! ข้อควรระวังและการเลือกใช้
ลิสต์และดิกชันนารีมีประโยชน์มาก แต่ก็มีข้อควรระวังบางอย่างที่ควรรู้ไว้ การทำความเข้าใจสิ่งเหล่านี้จะนำไปสู่การเขียนโปรแกรมที่ซับซ้อนขึ้นและช่วยหลีกเลี่ยงข้อผิดพลาดที่ไม่คาดคิดได้ครับ
ลิสต์ vs ดิกชันนารี: จะเลือกใช้อะไรดี?
-
กรณีที่ควรใช้ลิสต์:
- เมื่อ "ลำดับ" ของข้อมูลมีความสำคัญ (เช่น: อันดับ, ขั้นตอนทีละสเต็ป)
- เมื่อต้องการจัดการชุดข้อมูลที่ไม่ซับซ้อน (เช่น: รายการแท็ก, รายชื่อผู้ใช้)
-
กรณีที่ควรใช้ดิกชันนารี:
- เมื่อข้อมูลแต่ละตัวมีความ "หมาย" หรือ "ชื่อ" ที่เฉพาะเจาะจง (เช่น: คีย์ 'name' สำหรับชื่อ, 'age' สำหรับอายุ)
- เมื่อต้องการเข้าถึงค่าที่ต้องการอย่างรวดเร็วโดยใช้คีย์ที่เจาะจง
แม้แต่ในเนื้อหาของเว็บไซต์ คุณก็จะพบว่าตัวเองใช้ ลิสต์ สำหรับรายการเมนูที่ลำดับมีความสำคัญ และใช้ ดิกชันนารี สำหรับการตั้งค่าโดยรวมของเว็บไซต์ที่ต้องการจัดการด้วย "คีย์" อย่างเป็นธรรมชาติ
ข้อควรระวังในการ "คัดลอก" ลิสต์!
นี่เป็นหนึ่งในกับดักที่มือใหม่มักจะตกหลุมพรางครับ หากคุณคัดลอกลิสต์ไปยังตัวแปรอื่นโดยใช้เครื่องหมาย = เฉยๆ ตัวลิสต์เองจะไม่ถูกคัดลอก แต่จะเป็นการคัดลอก "ตำแหน่งที่อยู่ (reference)" ของลิสต์ไปแทน ผลก็คือ เมื่อแก้ไขลิสต์หนึ่ง อีกอันก็จะเปลี่ยนไปด้วย
# ตัวอย่างการคัดลอกที่ผิด
list_a = [1, 2, 3]
list_b = list_a # นี่ไม่ใช่การคัดลอกเนื้อหา!
print(f"ก่อนแก้ไข: list_a = {list_a}, list_b = {list_b}")
# เมื่อแก้ไข list_b...
list_b.append(4)
# กลายเป็นว่า list_a ก็เปลี่ยนไปด้วย!
print(f"หลังแก้ไข: list_a = {list_a}, list_b = {list_b}")
ผลลัพธ์การทำงาน:
ก่อนแก้ไข: list_a = [1, 2, 3], list_b = [1, 2, 3]
หลังแก้ไข: list_a = [1, 2, 3, 4], list_b = [1, 2, 3, 4]
เพื่อหลีกเลี่ยงปัญหานี้ ให้ใช้เมธอด copy() เพื่อสร้างลิสต์ใหม่ที่เป็นอิสระต่อกันโดยสิ้นเชิง
# ตัวอย่างการคัดลอกที่ถูกต้อง
list_a = [1, 2, 3]
list_c = list_a.copy() # ใช้เมธอด copy()
print(f"ก่อนแก้ไข: list_a = {list_a}, list_c = {list_c}")
# แม้จะแก้ไข list_c...
list_c.append(4)
# list_a ก็ไม่ได้รับผลกระทบ!
print(f"หลังแก้ไข: list_a = {list_a}, list_c = {list_c}")
ผลลัพธ์การทำงาน:
ก่อนแก้ไข: list_a = [1, 2, 3], list_c = [1, 2, 3]
หลังแก้ไข: list_a = [1, 2, 3], list_c = [1, 2, 3, 4]
5. ยังมีอีก! คอลเลกชันที่มีประโยชน์อื่นๆ
นอกจากลิสต์และดิกชันนารีแล้ว Python ยังมีคอลเลกชันที่มีประโยชน์อื่นๆ อีกครับ ในที่นี้จะขอแนะนำสั้นๆ 2 อย่าง
ทูเพิล (Tuple)
ทูเพิล พูดง่ายๆ ก็คือ "ลิสต์ที่แก้ไขไม่ได้" ครับ วิธีสร้างก็เพียงแค่เปลี่ยนวงเล็บเหลี่ยม [] ของลิสต์เป็นวงเล็บกลม () เท่านั้น เมื่อสร้างแล้ว จะไม่สามารถเพิ่ม, แก้ไข, หรือลบองค์ประกอบได้ ด้วยเหตุนี้ มันจึงเหมาะกับการจัดการข้อมูลที่ไม่ต้องการให้เปลี่ยนแปลงระหว่างการทำงานของโปรแกรม เช่น ค่าคงที่ต่างๆ
# กำหนดรหัสสี RGB ด้วยทูเพิล
color_red = (255, 0, 0)
print(f"ค่า RGB ของสีแดง: {color_red}")
# เข้าถึงองค์ประกอบตัวแรก
print(f"ค่า R: {color_red[0]}")
# หากพยายามแก้ไขจะเกิดข้อผิดพลาด
# color_red[0] = 200 # TypeError: 'tuple' object does not support item assignment
ผลลัพธ์การทำงาน:
ค่า RGB ของสีแดง: (255, 0, 0)
ค่า R: 255
เซต (Set)
เซต คือคอลเลกชันที่ "ไม่มีค่าซ้ำและไม่มีลำดับ" ครับ มันใช้วงเล็บปีกกา {} เหมือนดิกชันนารี แต่เก็บเฉพาะค่า ไม่ได้เก็บเป็นคู่คีย์-ค่า ประโยชน์หลักๆ คือใช้ในการลบองค์ประกอบที่ซ้ำกันออกจากลิสต์ หรือใช้หาองค์ประกอบที่ซ้ำกันหรือแตกต่างกันระหว่างลิสต์หลายๆ ตัว
# ลิสต์ที่มีข้อมูลซ้ำ
numbers = [1, 2, 2, 3, 4, 4, 4, 5]
print(f"ลิสต์เดิม: {numbers}")
# แปลงเป็นเซตเพื่อลบข้อมูลที่ซ้ำกัน
unique_numbers = set(numbers)
print(f"เซตที่ลบข้อมูลซ้ำแล้ว: {unique_numbers}")
# แปลงกลับเป็นลิสต์
unique_list = list(unique_numbers)
print(f"ข้อมูลที่แปลงกลับเป็นลิสต์: {unique_list}")
ผลลัพธ์การทำงาน:
ลิสต์เดิม: [1, 2, 2, 3, 4, 4, 4, 5]
เซตที่ลบข้อมูลซ้ำแล้ว: {1, 2, 3, 4, 5}
ข้อมูลที่แปลงกลับเป็นลิสต์: [1, 2, 3, 4, 5]
สรุป
ในครั้งนี้ เราได้อธิบายเกี่ยวกับ "ลิสต์" และ "ดิกชันนารี" ซึ่งเป็นหัวใจของโครงสร้างข้อมูลใน Python ตั้งแต่การใช้งานพื้นฐานไปจนถึงตัวอย่างการประยุกต์ใช้ในการสร้างเว็บ
- ลิสต์
[]: สำหรับชุดข้อมูลที่ลำดับมีความสำคัญ - ดิกชันนารี
{}: สำหรับจัดการข้อมูลที่มีความหมายด้วยคู่คีย์-ค่า - การประยุกต์ใช้: การผสมผสานสิ่งเหล่านี้ทำให้สามารถสร้างโครงสร้างข้อมูลสำหรับเนื้อหาเว็บแบบไดนามิกได้อย่างง่ายดาย
- ข้อควรระวัง: ใช้เมธอด
copy()ในการคัดลอกลิสต์
การใช้คอลเลกชันเหล่านี้ได้อย่างคล่องแคล่วจะช่วยเพิ่มประสิทธิภาพในการเขียนโปรแกรมด้วย Python ได้อย่างก้าวกระโดด โดยเฉพาะในโลกของการพัฒนาเว็บ ที่มีขั้นตอนพื้นฐานคือการนำข้อมูลที่ได้จากฐานข้อมูลมาจัดการในรูปแบบของลิสต์หรือดิกชันนารีเพื่อสร้าง HTML ต่อไป ลองนำโค้ดในบทความนี้ไปรันด้วยตัวเอง แล้วสัมผัสกับ "ความสนุกในการจัดการข้อมูล" ได้เลยครับ!
ขั้นตอนต่อไป:
เมื่อคุณคุ้นเคยกับการจัดการข้อมูลแล้ว ขั้นตอนต่อไปคือการเรียนรู้วิธีอ่านข้อมูลจากไฟล์และบันทึกผลลัพธ์ลงในไฟล์ บทความต่อไปนี้ได้อธิบายไว้อย่างละเอียดครับ
วิธีอ่านและเขียนไฟล์ใน Python (I/O)