ในบทความนี้ เราจะทำความเข้าใจความแตกต่างระหว่าง List และ Tuple ใน Python
List และ Tuple เป็นโครงสร้างข้อมูล 2 แบบที่ใช้ใน Python ทั้งคู่ถูกใช้ในกรณีต่างกันเพื่อเก็บข้อมูลชนิดต่างๆ
List (รายการ)
มักเรียกว่า Sequence (ลำดับ) ถือเป็นหนึ่งใน Data Type ที่ใช้บ่อยที่สุด และได้รับการยกย่องให้กับความหลากหลาย (Versatility) สามารถสร้าง List ได้โดยการวาง Element ทั้งหมดไว้ใน Square Brackets [ ] และคั่น Element ด้วย Comma สามารถมี Element จำนวนเท่าไหร่ก็ได้ และสามารถเป็นชนิดต่างๆ ได้ (Integer, Float, String, ฯลฯ) ลักษณะสำคัญที่สุดของ List คือเป็น Mutable Structure คือสามารถเปลี่ยนแปลงได้โดยอ้างอิง List
ลองดูการสร้าง List ที่มี Heterogeneous Data Types:
ตัวอย่าง
my_list = [1.8, 'string', 34, 'a']
print(my_list)
ผลลัพธ์
[1.8, 'string', 34, 'a']
มีหลายวิธีในการเข้าถึงข้อมูลภายใน List
ลองดูการใช้ Indexing เข้าถึง Element:
ตัวอย่าง
my_list = [1.8, 'string', 34, 'a']
print("The second element is")
print(my_list[1])
ผลลัพธ์
The second element is
string
เรายังสามารถเข้าถึง Element จากช่วงหนึ่งไปอีกช่วงหนึ่งได้ เรียกว่า List Slicing ลองดูวิธีทำ:
ตัวอย่าง
my_list = [1.8, 'string', 34, 'a']
print("The elements within a certain range are")
print(my_list[1:4])
ผลลัพธ์
The elements within a certain range are
['string', 34, 'a']
เรายังสามารถเปลี่ยนค่าของ List ได้โดยทำ Indexing และกำหนดค่าใหม่ให้ Index นั้น ลองดูวิธีทำ:
ตัวอย่าง
my_list = [1.8, 'string', 34, 'a']
print("List before changes")
print(my_list)
my_list[1] = 'my_string'
print("List after changes")
print(my_list)
ผลลัพธ์
List before changes
[1.8, 'string', 34, 'a']
List after changes
[1.8, 'my_string', 34, 'a']
Tuple (ทูเพิล)
ตอนนี้มาทำความเข้าใจการทำงานของ Tuple Structure สร้างด้วย Parenthesis คือ () ลักษณะสำคัญของ Tuple คือเป็น Immutable คือ Element ที่กำหนดไว้ใน Tuple ไม่สามารถเปลี่ยนแปลงได้โดยการเข้าถึง Tuple สามารถมี Element จำนวนเท่าไหร่ก็ได้ และเป็นชนิดต่างๆ ได้เช่นกัน (Integer, Float, String, ฯลฯ)
หมายเหตุ: Tuple สร้างได้โดยไม่ใช้ Parenthesis แต่ถือเป็น Best Practice ที่ควรใช้ Parenthesis
ลองดูการสร้าง Tuple ที่มี Element เดียว:
ตัวอย่าง
my_tuple = ("hey",)
print("Creating a tuple with one element")
print(my_tuple)
ผลลัพธ์
("hello")
หมายเหตุ: การเข้าถึง Element ของ Tuple, Negative Indexing, และ List Slicing เหมือนกับ List ทุกประการ
หาก Tuple มี List อยู่ภายใน List นั้นสามารถเปลี่ยนแปลงได้ แต่ Element ที่อยู่ใน Tuple โดยตรง (ไม่อยู่ใน List) จะเปลี่ยนแปลงไม่ได้