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 ขึ้นมา เราจะไม่สามารถเปลี่ยนแปลงค่าของมันได้ แต่ก็มีวิธีแก้ ดังนี้

  1. แปลงข้อมูล Tuple เป็นข้อมูลแบบ List
  2. เปลี่ยนแปลงข้อมูลใน List
  3. แปลงข้อมูลจาก 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 แล้วคืนค่ากลับมาเป็นอินเด็กซ์บอกตำแหน่งที่ค้นเจอข้อมูลดังกล่าวเป็นครั้งแรก