Python ตอนที่ 89 การแก้ไขข้อมูลใน Tuple

Tuple เป็นชนิดข้อมูลที่ไม่สามารถแก้ไขได้ คือเมื่อสร้างข้อมูลประเภท Tuple ขึ้นมาแล้ว เราจะเพิ่ม ลบ หรือแก้ไขข้อมูลใน Tuple นั้นโดยตรงไม่ได้

แต่ก็ไม่ต้องกังวล เมื่อทำโดยตรงไม่ได้ เราก็ทำอ้อม ๆ เอา โดยการแปลง Tuple ให้กลายเป็น List หลังจากนั้นจะแก้ไขข้อมูล ลบ หรือเพิ่ม ก็ทำได้ตามปรารถนา เสร็จแล้วก็แปลง List นั้นให้เป็น Tuple แค่นี้ก็เรียบร้อย ดังตัวอย่าง

myTuple = ("Asus", "Lenovo", "Acer", "Dell", "HP", "Apple", "Microsoft", "MSI")
myList = list(myTuple)
myList[0] = "Intel"
myTuple = tuple(myList)

print(myTuple)
  • บรรทัดที่ 1 สร้างข้อมูลประเภท Tuple ขึ้นมา 1 ชุด
  • บรรทัดที่ 2 ใช้ฟังก์ชัน list() แปลง Tuple ให้กลายเป็น List
  • บรรทัดที่ 3 แก้ไขค่าข้อมูลลำดับแรกในลิสต์ที่แปลงมาเป็น “Intel”
  • บรรทัดที่ 4 ใช้ฟังก์ชัน tuple() แปลงลิสต์ที่แก้ไขข้อมูลแล้วให้กลับไปเป็น Tuple เหมือนเดิม

ผลลัพธ์ จะได้ Tuple ที่มีการเปลี่ยนแปลงค่าเรียบร้อยแล้ว (ซึ่งไม่ได้เกิดจากการเปลี่ยนค่าใน Tuple โดยตรง)

(‘Intel’, ‘Lenovo’, ‘Acer’, ‘Dell’, ‘HP’, ‘Apple’, ‘Microsoft’, ‘MSI’)

การเพิ่มข้อมูลใน Tuple

อย่างที่ได้กล่าวไปแล้วว่า เราไม่สามารถทำการแก้ไข เพิ่ม หรือลบข้อมูลใน Tuple ได้

ถ้าต้องการเพิ่มข้อมูลใน Tuple ต้องแปลง Tuple ให้กลายเป็น List ก่อนแล้วค่อยเพิ่มข้อมูลเข้าไป หลังจากนั้นก็แปลงกลับมาเป็น Tuple เหมือนเดิม ดังตัวอย่าง

myTuple = ("Asus", "Lenovo", "Acer", "Dell", "HP", "Apple", "Microsoft", "MSI")
myList = list(myTuple)
myList.append("Intel")
myTuple = tuple(myList)

print(myTuple)
  • บรรทัดที่ 1 สร้างข้อมูลประเภท Tuple ขึ้นมา 1 ชุด ชื่อว่า myTuple
  • บรรทัดที่ 2 แปลง Tuple ให้กลายเป็น List ด้วยฟังก์ชัน list()
  • บรรทัดที่ 3 เพิ่มข้อมูลเข้าไปในลิสต์ ด้วยเมธอด append()
  • บรรทัดที่ 4 แปลง List กลับมาเป็น Tuple ด้วยฟังก์ชัน tuple() และเก็บไว้ในตัวแปร myTuple เหมือนเดิม

ผลลัพธ์ จะได้ Tuple ที่มีการเพิ่มข้อมูลใหม่เข้าไปเรียบร้อยแล้ว

(‘Asus’, ‘Lenovo’, ‘Acer’, ‘Dell’, ‘HP’, ‘Apple’, ‘Microsoft’, ‘MSI’, ‘Intel’)

อีกวิธีหนึ่งที่ทำได้ก็คือ การเพิ่มข้อมูลชนิด Tuple เข้าไปใน Tuple ต้นทาง คือสร้างข้อมูลประเภท Tuple ใหม่ขึ้นมา พร้อมกับกำหนดข้อมูลเข้าไปตามที่ต้องการ หลังจากนั้นจึงนำ Tuple ใหม่ไปรวมกับ Tuple เดิม ดังตัวอย่าง

myTuple = ("Asus", "Lenovo", "Acer", "Dell", "HP", "Apple", "Microsoft", "MSI")
newTuple = ("Intel",)
myTuple += newTuple

print(myTuple)
  • บรรทัดที่ 1 สร้างตัวแปรเก็บข้อมูลแบบ Tuple ขึ้นมา 1 ตัว
  • บรรทัดที่ 2 สร้างตัวแปรเก็บข้อมูลแบบ Tuple ขึ้นมาอีก 1 ตัว สำหร้บเก็บข้อมูลที่จะเพิ่มเข้าไปยัง Tuple ต้นทาง (ถ้าเก็บข้อมูลเพียงค่าเดียว ให้เพิ่มเครื่องหมายคอมม่า (,) เข้าไปด้านหลังด้วย แต่ถ้าเก็บข้อมูลมากกว่า 1 ค่า ก็ไม่จำเป็นต้องเพิ่มคอมม่าด้านหลัง แต่ต้องเพิ่มระหว่างข้อมูลแต่ละค่า)
  • บรรทัดที่ 3 นำข้อมูลจาก Tuple ใหม่ไปเพิ่มให้กับ Tuple ต้นทาง โดยใช้โอเปอเรเตอร์ +=

ผลลัพธ์

(‘Asus’, ‘Lenovo’, ‘Acer’, ‘Dell’, ‘HP’, ‘Apple’, ‘Microsoft’, ‘MSI’, ‘Intel’)

การลบข้อมูลใน Tuple

แน่นอนว่าเราไม่สามารถลบข้อมูลใน Tuple โดยตรงได้ แต่เราสามารถทำวิธีทางอ้อมเหมือนการแก้ไขและการเพิ่มได้โดยการแปลง Tuple ให้เป็น List ก่อน ดังนี้

myTuple = ("Asus", "Lenovo", "Acer", "Dell", "HP", "Apple", "Microsoft", "MSI")
myList = list(myTuple)
myList.remove("MSI")
myTuple = tuple(myList)

print(myTuple)
  • บรรทัดที่ 2 แปลง Tuple ต้นทางให้กลายเป็น List ด้วยฟังก์ชัน list()
  • บรรทัดที่ 3 ใช้เมธอด remove() ลบข้อมูลที่ต้องการออกจากลิสต์
  • บรรทัดที่ 4 ใช้ฟังก์ชัน tuple() แปลงลิสต์กลับมาเป็น Tuple เหมือนเดิม

ผลลัพธ์ จะได้ Tuple ที่ถูกลับข้อมูลบางรายการออกไปแล้ว

(‘Asus’, ‘Lenovo’, ‘Acer’, ‘Dell’, ‘HP’, ‘Apple’, ‘Microsoft’)

การลบ Tuple

ถึงแม้ว่าเราจะไม่สามารถ เพิ่ม ลบ หรือแก้ไขข้อมูลใน Tuple ได้ แต่ถ้าจะลบ Tuple ทิ้งไปเลย สามารถทำได้โดยใช้คีย์เวิร์ด del ดังนี้

myTuple = ("Asus", "Lenovo", "Acer", "Dell", "HP", "Apple", "Microsoft", "MSI")
del myTuple

Tuple จะถูกลบทิ้งอย่างสมบูรณ์ ไม่สามารถนำมาใช้ได้อีก