tuple คือ ชุดของข้อมูล ที่จะแสดงตามลำดับ และไม่สามารถเปลี่ยนแปลงข้อมูลในชุดนั้นได้ เขียนคลุมด้วยเครื่องหมายวงเล็บ ()
ความแตกต่างระหว่าง tuple กับ list
tuple เป็นชุดข้อมูลที่เรียกว่า unchangeable หรือ immutable หมายความว่าตราบใดที่อยู่ในรูปของ tuple ข้อมูลใดๆก็ตามที่อยู่ในเครื่องหมายวงเล็บ เราไม่สามารถลบ/เพิ่มจำนวนข้อมูล หรือแทนที่ข้อมูลที่มีอยู่ด้วยข้อมูลใหม่ตัวอื่นได้ ส่วน list เราสามารถเพิ่ม/ลบ หรือแทนที่ข้อมูลที่อยู่ในเครื่องหมาย [] ได้
สร้าง tuple
tuple จะถูกคลุมด้วยเครื่องหมายวงเล็บ () และข้อมูลแต่ละตัวจะถูกแยกด้วยเครื่องหมาย comma
ตัวอย่าง
a = ('a', 'b', 'c')
print(a)
output:
('a', 'b', 'c')
สร้าง tuple แบบมีข้อมูลเดียว
ต้องใส่เครื่องหมาย comma แม้ว่าจะมีข้อมูลแค่ตัวเดียวก็ตาม ไม่เช่นนั้น Python จะนับว่าข้อมูลดังกล่าวไม่ใช่ tuple
สามารถเช็คข้อมูลได้โดยใช้ type() ฟังก์ชั่น
a = ('a',)
print(type(a))
b = ('a')
print(type(b))
output:
<class 'tuple'>
<class 'str'>
เข้าถึงข้อมูล
สามารถเข้าถึงข้อมูลของ tuple ได้โดยการอ้างถึง index ของข้อมูลข้างใน tuple (การนับตำแหน่ง index จะเริ่มนับที่ 0)
ตัวอย่าง
a = ('a', 'b', 'c')
print(a[2])
output:
c
หาค่า index ของข้อมูล
ใช้ index() method เพื่อหาตำแหน่ง index ของข้อมูลที่ต้องการ กรณีที่มีข้อมูลมากกว่า 1 ตัวใน tuple ตำแหน่งที่ได้จะเป็นตำแหน่งของข้อมูลตัวแรกที่พบใน list ก่อนเท่านั้น (นับจากซ้ายไปขวา)
ตัวอย่าง
a = ('a', 'b', 'c', 'c')
x = a.index('c')
print(x)
output:
2
การ index แบบติดลบ
เมื่อค่า index ที่ใส่เป็นจำนวนเต็มลบ จะเป็นการนับจากด้านหลังของ tuple มาที่ด้านหน้า และเริ่มนับจาก -1
ตัวอย่าง
a = ('a', 'b', 'c')
print(a[-2])
output:
b
Range indexes
สามารถกำหนดค่า range เพื่อแสดงจำนวนสมาชิกตั้งแต่ตำแหน่งหนึ่งไปจนถึงตำแหน่งหนึ่งใน range ได้ (ตัวสุดท้ายเป็น exclusive)
tuple[start:end]
ค่าที่ได้จะได้ tuple อันใหม่ที่มีข้อมูลเฉพาะข้อมูลใน range ที่เราระบุเท่านั้น
ตัวอย่าง
a = ('a', 'b', 'c', 'd', 'e')
b = a[1:3]
print(b)
output:
('b', 'c')
หากเว้นค่า start การแสดงผลของ tuple จะแสดงผลตั้งแต่ข้อมูลแรกของ tuple ไปจนถึงข้อมูลที่อยู่ในตำแหน่ง end แบบ exclusive
ตัวอย่าง
a = ('a', 'b', 'c', 'd', 'e')
b = a[:3]
print(b)
output:
('a', 'b', 'c')
หากเว้นค่า end การแสดงผลของ tuple จะแสดงผลตั้งแต่ข้อมูลของตำแหน่งที่ระบุในค่า start ไปจนถึงข้อมูลสุดท้ายใน tuple
ตัวอย่าง
a = ('a', 'b', 'c', 'd', 'e')
b = a[1:]
print(b)
output:
('b', 'c', 'd', 'e')
Range ติดลบ
คือการ range จากหลังมาหน้า ตัวที่ติดลบจะนับจากด้านหลัง ตัวที่ไม่ได้ติดลบจะนับจากด้านหน้าปกติ ผลลัพธ์คือ ข้อมูลที่อยู่ในระหว่าง range นี้
start เป็นจำนวนเต็มบวก end เป็นจำนวนเต็มลบ
ตัวอย่าง
a = ('a', 'b', 'c', 'd', 'e')
b = a[1:-2]
print(b)
output:
('b', 'c')
start เป็นจำนวนเต็มลบ end เป็นจำนวนเต็มบวก
a = ('a', 'b', 'c', 'd', 'e')
b = a[-4:5]
print(b)
output:
('b', 'c', 'd', 'e')
start และ end เป็นจำนวนเต็มลบ
a = ('a', 'b', 'c', 'd', 'e')
b = a[-4:-1]
print(b)
output:
('b', 'c', 'd')
เวลาเก็บข้อมูลที่อยู่ใน range มาใส่ใน tuple อันใหม่ จะนับจากค่า start ไปหาค่า end ทางขวามือ ดังนั้นไม่ว่าค่าทั้งสองจะเป็นจำนวนเต็มลบหรือเต็มบวกก็ตาม หากต้องนับค่า start ไปหาค่า end ทางซ้ายมือ จะได้ tuple ว่าง ()
เพิ่ม/ลบ/เปลี่ยนข้อมูลใน tuple
เราไม่สามารถเพิ่ม, เปลี่ยน หรือลบข้อมูลใน tuple ได้ หากต้องการทำการดังกล่าว จะต้องแปลง tuple เป็น list ก่อน โดยใช้ list() ฟังก์ชั่น
ตัวอย่าง
a = ('a', 'b', 'c', 'd', 'e')
a = list(a)
a[1] = 'x'
print(a)
a = tuple(a)
print(a)
output:
['a', 'x', 'c', 'd', 'e']
('a', 'x', 'c', 'd', 'e')
จากตัวอย่าง tuple เราแปลง tuple a ให้อยู่ในรูป list จากนั้นเปลี่ยนค่าของข้อมูลใน index ที่ 1 เป็น x เมื่อแสดงค่า a จะพบว่า a อยู่ในรูปของ list (ล้อมด้วยเครื่องหมาย [])
จากนั้นเราสามารถแปลง a ให้กลับไปอยู่ในรูปของ tuple ได้อีกโดยการใช้ tuple() ฟังก์ชั่น
Loop tuple
ลูปข้อมูลทั้งหมดใน tuple ออกมา โดยใช้ for loop จะได้ข้อมูลทีละตัวในแต่ละแถว
ตัวอย่าง
a = ('a', 'b', 'c', 'd', 'e')
for x in a:
print(x)
output:
a
b
c
d
e
Check ข้อมูลใน tuple
ใช้ if…in keyword เพื่อดูว่ามีข้อมูลนั้นๆใน tuple หรือเปล่า
a = ('a', 'b', 'c', 'd', 'e')
if 'z' in a:
print('z is in tuple a')
else:
print('z is not in tuple a')
output:
z is not in tuple a
นับข้อมูลใน tuple
ใช้ฟังก์ชั่น len() เพื่อหาจำนวนข้อมูลใน tuple
ตัวอย่าง
a = ('a', 'b', 'c', 'd', 'e')
print(len(a))
output:
5
นับว่ามีข้อมูลนั้นกี่อัน
count() method ใช้นับว่ามีข้อมูลนั้นกี่อันใน tuple
ตัวอย่าง
a = ('a', 'b', 'c', 'd', 'a')
aCount = a.count('a')
print(aCount)
output:
2
จากตัวอย่าง มี a ใน tuple 2 อัน เมื่อใช้ method count() นับออกมาจึงได้ผลลัพธ์เป็น 2
ลบ tuple
เราไม่สามารถเพิ่ม/ลบ/เปลี่ยนข้อมูลใน tuple ได้ แต่สามารถลบ tuple ออกไปเลยได้
ตัวอย่าง
a = ('a', 'b', 'c')
del a
print(a)
output:
NameError: name 'a' is not defined
รวม tuple เข้าด้วยกัน
ใช้เครื่องหมายทางคณิตศาสตร์ เครื่องหมายบวก (+ operator) ในการรวม tuple เข้าด้วยกัน
ตัวอย่าง
a = (1, 2, 3)
b = ('a', 'b', 'c')
c = ('D', 'E', 'F')
d = a + b + c
print(d)
output:
(1, 2, 3, 'a', 'b', 'c', 'D', 'E', 'F')
tuple() constructor
สามารถสร้าง tuple ได้โดยใช้ tuple() ฟังก์ชั่น
ตัวอย่าง
a = tuple(('a', 'b', 'c'))
print(a)
output:
('a', 'b', 'c')
Tuple Built-in Methods
Method | Description |
---|---|
index() | หาค่า index ของข้อมูล โดยหากมีข้อมูลซ้ำกัน จะได้เป็นค่า index ของข้อมูลตัวแรก |
count() | นับจำนวนที่ข้อมูลใดข้อมูลหนึ่งปรากฏใน tuple |