
เขียนโปรแกรมภาษา Python ตอนที่ 87 ข้อมูลชนิด Tuple
Tuple คือข้อมูลแบบคอลเล็คชันที่มีการเรียงลำดับและไม่สามารถเปลี่ยนแปลงได้ ซึ่งข้อมูลแบบ Tuple นี้จะถูกเขียนอยู่ในเครื่องหมายวงเล็บ () round brackets
tupledata = ("Python", "ASP.NET", "C#") print(tupledata) #('Python', 'ASP.NET', 'C#')
การเข้าถึงไอเท็มของ Tuple
เราสามารถเข้าถึงสมาชิกของ Tuple ได้โดยการอ้างอิงหมายเลขอินเด็กซ์ ซึ่งจะถูกเขียนไว้ในวงเล็บ [] square brackets โดยลำดับอินเด็กซ์จะเริ่มจาก 0
tupledata = ("Python", "ASP.NET", "C#", "Swift", "Kotlin") print(tupledata[3]) # ผลลัพธ์ : "Swift"
จากตัวอย่าง สั่งให้แสดงข้อมูลใน Tuple โดยอ้างอิงอินเด็กซ์ลำดับ 3 (จะหมายถึงสมาชิกตัวที่ 4 เพราะอินเด็กซ์เริ่มนับจาก 0)
การเข้าถึงข้อมูลด้วยอินเด็กซ์ติดลบ
ถ้าเราระบุอินเด็กซ์เป็นค่าติดลบ จะเป็นการอ้างอิงสมาชิกใน Tuple โดยเริ่มนับจากสมาชิกตัวสุดท้ายก่อน และจะเริ่มจากอินเด็กซ์ -1 ดังตัวอย่าง
tupledata = ("Python", "ASP.NET", "C#", "Swift", "Kotlin") print(tupledata[-3]) # ผลลัพธ์ : "C#"
จากโค้ดตัวอย่าง สั่งให้แสดงสมาชิกลำดับที่ -3 ใน Tuple นั่นคือ สมาชิกตัวที่ 3 นับจากตัวสุดท้าย ผลลัพธ์จึงเป็น “C#” เพราะ “C#” เป็นสมาชิกลำดับที่ 3 ถ้านับมาจากทางท้ายนั่นเอง
การเข้าถึงข้อมูลใน Tuple แบบระบุช่วงอินเด็กซ์
เราสามารถเข้าถึงข้อมูลใน Tuple โดยการระบุอินเด็กซ์อ้างอิงเป็นช่วงได้ เช่น ต้องการข้อมูลลำดับที่ 4 ถึง 6 ก็สามารถทำได้เช่นกัน โดยต้องคั่นอินเด็กซ์เริ่มต้นกับอินเด็กซ์สิ้นสุดด้วยเครื่องหมายโคลอน : โดยเราจะได้ข้อมูลกลับมาเป็น Tuple ใหม่ ที่มีสมาชิกตามที่เราระบุในอินเด็กซ์
รูปแบบการระบุอินเด็กซ์แบบช่วงจะเป็นดังนี้
tuple[4:6]
- ตัวเลขตัวแรกคือ start index อินเด็กซ์เริ่มต้น (นับเริ่มจาก 0)
- ตัวเลขตัวที่สอง คือ end index อินเด็กซ์สิ้นสุด (ข้อมูลที่ได้จะได้ข้อมูลลำดับที่ end index – 1)
ตัวอย่างการเข้าถึงสมาชิกใน Tuple แบบกำหนดช่วง
tupledata = ("Python", "ASP.NET", "C#", "Swift", "Kotlin", "Java", "JavaScript", "Bootstrap") print(tupledata[4:6]) # ผลลัพธ์ : ('Kotlin', 'Java')
จากโค้ด สั่งให้แสดงข้อมูลจาก Tuple โดยระบุอินเด็กซ์เป็น [4:6] เราจะได้ข้อมูลตั้งแต่สมาชิกลำดับที่ 4 (สมาชิกตัวที่ 5) จนถึงสมาชิกลำดับที่ 6-1 (คือสมาชิกลำดับที่ 5) ผลลัพธ์จึงได้เป็น (‘Kotlin’, ‘Java’)
การเข้าถึงข้อมูลใน Tuple แบบช่วงด้วยอินเด็กซ์ติดลบ
เราสามารถเข้าถึงข้อมูลใน Tuple แบบช่วงด้วยการระบุอินเด็กเป็นตัวเลขติดลบได้ เช่น tuple[-5:-2]
ข้อมูลเริ่มต้น เราจะได้ข้อมูลเริ่มต้นตามตัวเลขที่ระบุเป็น start index เช่นระบุเป็น -5 ก็จะได้สมาชิกลำดับที่ 5 นับมาจากทางท้ายของ Tuple
แต่ข้อมูลตัวสุดท้าย เราจะได้ข้อมูลลำดับถัดจากตัวเลข end index ที่ระบุ เช่น ถ้าระบุเป็น -1 เราจะได้ข้อมูลถึงลำดับ -2 แต่ถ้าระบุเป็น -2 เราจะได้ข้อมูลลำดับ -3 ดังตัวอย่าง
tupledata = ("Python", "ASP.NET", "C#", "Swift", "Kotlin", "Java", "JavaScript", "Bootstrap") print(tupledata[-5:-2]) # ผลลัพธ์ : ('Swift', 'Kotlin', 'Java')
จากตัวอย่าง เราเข้าถึงข้อมูลจาก Tuple แบบช่วง โดยกำหนดหมายเลขอินเด็กซ์ติดลบ จากตัวอย่าง เรากำหนดอินเด็กซ์เป็น [-5:-2] เราจะได้ข้อมูลลำดับที่ -5 ถึง -3 จึงได้ผลลัพธ์เป็น (‘Swift’, ‘Kotlin’, ‘Java’) ดูภาพประกอบ

การเปลี่ยนแปลงค่าใน Tuple
เมื่อเราสร้างข้อมูลชนิด Tuple ขึ้นมา เราจะไม่สามารถเปลี่ยนแปลงค่าของมันได้ แต่ก็มีวิธีแก้ ดังนี้
- แปลงข้อมูล Tuple เป็นข้อมูลแบบ List
- เปลี่ยนแปลงข้อมูลใน List
- แปลงข้อมูลจาก List กลับมาเป็น Tuple
ตัวอย่าง
tupledata = ("Python", "ASP.NET", "C#") listdata = list(tupledata) listdata[2] = "Java" tupledata = tuple(listdata) print(tupledata) # ผลลัพธ์ : ('Python', 'ASP.NET', 'Java')
- บรรทัดที่ 1 สร้างตัวแปร tupledata เก็บข้อมูลแบบ Tuple
- บรรทัดที่ 2 แปลงข้อมูล Tuple ให้เป็นข้อมูลแบบ List โดยเก็บไว้ที่ตัวแปร listdata
- บรรทัดที่ 3 แก้ไขข้อมูลใน List (ในตัวอย่าง แก้ไข “C#” หมายเลขอินเด็กซ์ 2 โดยให้เป็นค่าใหม่คือ “Java”)
- บรรทัดที่ 4 แปลงข้อมูลจาก List ที่มีการแก้ไขแล้ว กลับมาเป็นข้อมูลประเภท Tuple เหมือนเดิม
- บรรทัดที่ 6 สั่งให้แสดงผลข้อมูลจาก Tuple ออกมา จะได้ข้อมูลที่เปลี่ยนไปจากเดิมตามที่เราแก้ไข
การเข้าถึงข้อมูลใน Tuple ด้วยลูป Loop
เราสามารถใช้ลูป for เข้าถึงสมาชิกแต่ละตัวใน Tuple ได้ ดังนี้
tupledata = ("Python", "ASP.NET", "C#", "Swift", "Kotlin", "Java", "JavaScript") for x in tupledata: print(x)
จากโค้ดตัวอย่าง เราใช้ลูป for เข้าถึงสมาชิกแต่ละตัวใน Tuple แล้วสั่งให้แสดงผลออกมา จะได้ผลลัพธ์ดังนี้

ตรวจสอบว่ามีข้อมูลที่ต้องการอยู่ใน Tuple หรือไม่
เราสามารถตรวจสอบว่ามีข้อมูลที่เราต้องการอยู่ใน Tuple หรือไม่ โดยใช้คีย์เวิร์ด in ดังนี้
tupledata = ("Python", "ASP.NET", "C#", "Swift", "Kotlin", "Java", "JavaScript") if "Kotlin" in tupledata: print("มีข้อมูล 'Kotlin' อยู่ใน Tuple") # ผลลัพธ์ : "มีข้อมูล 'Kotlin' อยู่ใน Tuple"
ตรวจสอบจำนวนสมาชิกใน Tuple ด้วยเมธอด len()
เราสามารถตรวจสอบว่าใน Tuple มีสมาชิกทั้งหมดจำนวนกี่ตัว โดยการใช้เมธอด len() ดังนี้
tupledata = ("Python", "ASP.NET", "C#", "Swift", "Kotlin", "Java", "JavaScript") print(len(tupledata)) # ผลลัพธ์ : 7
การสร้าง Tuple ที่มีสมาชิกเพียงตัวเดียว
โดยปกติ การสร้างข้อมูลประเภท Tuple จะทำโดยการสร้างตัวแปรและกำหนดค่าให้มันโดยข้อมูลที่กำหนดให้ Tuple จะต้องอยู่ในเครื่องหมายวงเล็บ () แต่ถ้าเราต้องการกำหนดข้อมูลที่มีสมาชิกเพียงตัวเดียวให้ Tuple จะต้องเติมเครื่องหมายคอมม่า (,) หลังสมาชิกตัวนั้นด้วย เช่น tupledata = (“Python”,) สังเกตว่า มีเครื่องหมายคอมม่า (,) ตามหลัง “Python”
ถ้าไม่ทำเช่นนี้ ไพธอนจะไม่มองว่าข้อมูลตัวนี้เป็น Tuple
ดูตัวอย่างประกอบ
tupledata = ("Python",) print(tupledata) # ผลลัพธ์ : ('Python',) # ข้อมูลนี้เป็นข้อมูลชนิด Tuple tupledata = ("Python") print(tupledata) # ผลลัพธ์ : Python # ข้อมูลนี้ไม่ถูกมองว่าเป็นข้อมูลชนิด Tuple
การลบข้อมูล Tuple
เราไม่สามารถลบสมาชิกตัวใด ๆ ออกจากข้อมูลชนิด Tuple ได้ แต่เราสามารถลบ Tuple ทั้งหมดทิ้งได้โดยใช้คีย์เวิร์ด del ดังนี้
tupledata = ("Python", "ASP.NET", "C#", "Swift", "Kotlin", "Java", "JavaScript") del tupledata # tupledata จะถูกลบอย่างถาวร
การจอยทูเพิล join tuple
เราสามารถจอยหรือรวม Tuple หลาย ๆ อันเข้าด้วยกันได้ด้วยเครื่องหมาย + ดังนี้
tupledata1 = ("Python", "ASP.NET", "C#", ) tupledata2 = ("Swift", "Kotlin", "Java", "JavaScript") tupledata3 = tupledata1 + tupledata2 print(tupledata3) # ผลลัพธ์ : ('Python', 'ASP.NET', 'C#', 'Swift', 'Kotlin', 'Java', 'JavaScript')
การสร้าง Tuple ด้วย tuple() Constructor
เราสามารถสร้างข้อมูลชนิด Tuple ด้วยคอนสตรัคเตอร์ tuple() ได้ ดังรูปแบบต่อไปนี้
tupledata = tuple(("Python", "ASP.NET", "C#", "Swift", "Kotlin", "Java", "JavaScript")) print(tupledata) # ผลลัพธ์ : ('Python', 'ASP.NET', 'C#', 'Swift', 'Kotlin', 'Java', 'JavaScript')
เมธอดของ Tuples
ข้อมูลประเภท Tuple มีเมธอดให้ใช้งานดังนี้
ชื่อเมธอด | คำอธิบาย |
count() | คืนค่ากลับมาเป็นตัวเลขบอกจำนวนครั้งที่เจอคำที่ค้นหาใน Tuple |
index() | ค้นหาข้อมูลที่ระบุใน Tuple แล้วคืนค่ากลับมาเป็นอินเด็กซ์บอกตำแหน่งที่ค้นเจอข้อมูลดังกล่าวเป็นครั้งแรก |