ทูเบิล (Tuple)
ความหมายของ Tuple
Tuple จะคล้ายกับ List แต่สิ่งที่แตกต่างกันคือ Tuple
นั้นเป็นประเภทข้อมูลที่ไม่สามารถเปลี่ยนแปลงได้
เมื่อไม่ต้องการให้ส่วนใดส่วนหนึ่งของโปรแกรมเผลอไปเปลี่ยน Value
ก็ควรใช้ Tuple การสร้าง Tuple นั้น จะอยู่ภายในวงเล็บ `()
และคั่นค่าแต่ละตัวด้วยเครื่องหมายคอมมา (,
)
อย่างไรก็ตามในบางครั้งเครื่องหมายวงเล็บอาจละไว้ไม่ต้องใส่ก็ได้ถ้าโค้ดอ่านแล้วไม่เกิดความสับสน
ส่วนการเข้าถึงค่าใน Tuple ใช้ index เหมือนกับ list การสร้าง Tuple
เป็นดังตัวอย่างต่อไปนี้
>>> t = 'a', 'b', 'c'
>>> t ('a', 'b', 'c')
>>> t = 'a',
>>> t
('a',)
>>> t = ('a', 'b', 'c')
>>> t[0]
'a'
>>> t[1]
'b'
>>> t[1:]
('b', 'c')
>>> t[0] = 'z'
Traceback (most recent call last):
File ''<pyshell#16>'', line 1, in <module>
t[0] = 'z'
TypeError: 'tuple' object does not support item assignment
การสลับค่าของ Tuple
การสลับค่าของ Tuple สามารถเขียน a, b = b, a และสามารถกำหนดค่าจาก String มาเป็น Tuple ได้ด้วยคำสั่ง split() เช่น username, domain = 'support@classstart.org'.split('@') เป็นดังตัวอย่างต่อไปนี้
>>> username, domain = '[email protected]'.split('@')
>>> username
'support'
>>> domain
'classstart.org'
การเก็บค่าการดำเนินการใน Tuple
เราสามารถใช้ Tuple ในการเก็บค่าที่ได้จากการดำเนินการได้โดยตรง เช่น
floor, reminder = divmod(7, 3)
โดยที่ floor คือ
ค่าจำนวนเต็มที่ได้จากการหาร ส่วน remainder คือค่าของเศษที่ได้จากการหาร
เป็นดังตัวอย่างต่อไปนี้
>>> t = divmod(7,3)
>>> t
(2, 1)
>>> floor, remainder = divmod(7,3)
>>> floor
2
>>> remainder
1
ตัวอย่างการเขียนฟังก์ชันเพื่อให้ค่ากับมาเป็น Tuple เป็นดังนี้ Source code:
def split_email(email):
return email.split('@')
ซึ่งได้ผลลัพธ์ดังนี้
>>> username, domain = split_email('[email protected]')
>>> username
'support'
>>> domain
'classstart.org'
ฟังก์ชัน list()
เปลี่ยน tuple ให้เป็น list
ตัวอย่างการใช้ฟังก์ชัน list()
เปลี่ยน tuple ให้เป็น list
>>> t = (1,2,3,4,5)
>>> t
(1,2,3,4,5)
>>> type(t)
|<class \rq{}tuple\rq{}>|
>>> mylist = list(t)
>>> mylist
[1,2,3,4,5]
Dictionary และ Tuple
เมธอด items()
ของ Dictionary จะให้ค่าเป็น List ของ Tuples โดย
Tuples แต่ละตัวคือ Key และ Value ดังตัวอย่างต่อไปนี้
>>> d = {'ppt' : 360, 'scb' : 160}
d
{'ppt' : 360, 'scb' : 160}
>>> d.items()
dict_items([('ppt', 360),('scb', 160)])
สรุปความแตกต่างในการใช้ Data Types คือถ้าหากต้องการลำดับของอักษร จะใช้ String ถ้าต้องการลำดับของค่าที่เปลี่ยนแปลงได้จะใช้ List ถ้าต้องการลำดับของค่าที่เปลี่ยนแปลงไม่ได้จะใช้ Tuple ถ้าต้องการคู่ลำดับของ Key กับ Value จะใช้ Dictionary
แบบฝึกหัด
จงเขียนโปรแกรมสร้าง Tuple มีค่าดังต่อไปนี้
("tuple", False, 3.2, 1)
และแสดงค่าออกมาจงเขียนโปรแกรมสร้าง Tuple มีค่าดังต่อไปนี้ 4 8 3 แล้วทำการแยกค่าแต่ละค่าให้เป็นตัวแปรแต่ละตัว แล้วให้คำนวณผลรวมของตัวแปรทั้งหมด
จงเขียนโปรแกรมสร้าง Tuple มีค่าดังต่อไปนี้ 4 6 2 8 3 1 แล้วให้แปลง Tuple เป็น List และการเพิ่มเลข 30 เข้าไป แล้วให้แปลง list กลับมาเป็น Tuple ทำการ Print Tuple นั้น
จงเขียนโปรแกรมแปลง Tuple ให้เป็น String โดยให้ Tuple มีค่าคือ
('e', 'x', 'e', 'r', 'c', 'i', 's', 'e', 's')
จงเขียนโปรแกรมตรวจสอบว่ามีข้อมูลอยู่ใน Tuple หรือไม่ โดยให้ Tuple มีค่าคือ
("w", 3, "r", "e", "s", "o", "u", "r", "c", "e")