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

MethodDescription
index()หาค่า index ของข้อมูล โดยหากมีข้อมูลซ้ำกัน จะได้เป็นค่า index ของข้อมูลตัวแรก
count()นับจำนวนที่ข้อมูลใดข้อมูลหนึ่งปรากฏใน tuple