Python ตอนที่ 66 ข้อมูลประเภทรายการ List

ข้อมูลประเภทคอลเล็คชั่น Collections ในภาษาไพธอน มีอยู่ 4 ประเภท ดังนี้

  • List ลิสต์ คือ ชุดข้อมูลแบบคอลเล็คชั่นที่มีการเรียงลำดับ และแก้ไขได้ สามารถมีสมาชิกซ้ำกันได้
  • Tuple ทูเพิ้ล คือ ชุดข้อมูลแบบคอลเล็คชั่นที่มีการเรียงลำดับเหมือนลิสต์ แต่ไม่สามารถแก้ไขได้ สามารถมีสมาชิกซ้ำกันได้
  • Set เซ็บ คือ ชุดข้อมูลแบบคอลเล็คชั่นที่ไม่มีการเรียงลำดับ ไม่มีการทำอินเด็กซ์ และมีสมาชิกซ้ำกันไม่ได้
  • Dictionary ดิกชันนารี คือ ชุดข้อมูลแบบคอลเล็คชั่นที่ไม่มีการเรียงลำดับ แต่แก้ไขได้ มีการทำอินเด็กซ์ และมีสมาชิกซ้ำกันไม่ได้

List ข้อมูลประเภทลิสต์ ในภาษาไพธอน

List ลิสต์ คือ ชุดข้อมูลแบบคอลเล็คชันที่มีการเรียงลำดับ และสามารถแก้ไขได้ โดยการสร้างข้อมูลแบบ List ในภาษาไพธอน จะใช้เครื่องหมาย square brackets [] ครอบชุดข้อมูล

ตัวอย่างการสร้างข้อมูลแบบ List

mylist = ["iPhone", "Samsung", "Vivo"]
print(mylist)

ผลลัพธ์

หรืออีกวิธีหนึ่ง เราสามารถสร้างลิสต์ได้โดยการใช้คอนสตรัคเตอร์ list() ซึ่งมีรูปแบบการใช้งานดังนี้

mylist = list(("Swift", "C++", "Python", "Java", "Kotlin", "HTML", "Objective-C", "C#"))

print(mylist)

การเข้าถึงข้อมูลประเภทลิสต์ List

เราสามารถเข้าถึงข้อมูล (Member) แต่ละตัวใน List ได้โดยการอ้างอิงหมายเลขอินเด็กซ์ไว้ภายในเครื่องหมาย [] square brackets โดยหมายเลขอินเด็กซ์จะเริ่มต้นที่ 0

ตัวอย่างการเข้าถึงข้อมูล (Member) ใน List

mylist = ["iPhone", "Samsung", "Vivo"]
print(mylist[1])

ผลลัพธ์

การระบุหมายเลขอินเด็กซ์ด้วยค่าตัวเลขที่ติดลบ จะหมายถึงการเริ่มต้นอินเด็กซ์จากข้อมูลตัวท้ายสุด คือเริ่มนับจากด้านหลังนั่นเอง เช่น [-1] จะหมายถึงข้อมูลสมาชิกตัวสุดท้าย (ตัวที่หนึ่งนับจากตัวสุดท้าย ก็คือตัวสุดท้ายนั่นเอง) [-2] จะหมายถึงข้อมูลสมาชิกลำดับที่สองนับจากตัวสุดท้าย เป็นต้น ดังตัวอย่าง

mylist = ["iPhone", "Samsung", "Vivo"]
print(mylist[-1])

ผลลัพธ์

เราสามารถเข้าถึงสมาชิกข้อมูลใน List โดยการระบุดินเด็กซ์เป็นช่วงตัวเลขได้ เช่น ต้องการข้อมูลลำดับที่ 3-6 ก็สามารถทำได้ โดยจะคืนค่ากลับมาเป็น List ชุดใหม่ ที่มีข้อมูลตามที่ระบุ

ตัวอย่างการเข้าถึงสมาชิกใน List โดยการระบุอินเด็กซ์เป็นช่วงตัวเลข

mylist = ["Swift", "Python", "Java", "Kotlin", "HTML", "Objective-C", "C#"]
print(mylist[3:6])
  • บรรทัดที่ 1 สร้างข้อมูลแบบ List ขึ้นมาใช้งาน
  • บรรทัดที่ 2 สั่งแสดงค่าของข้อมูลในลิสต์ โดยระบุอินเด็กซ์เป็น [3:6]

จากโค้ดตัวอย่าง จะได้ข้อมูลที่มีอินเด็กซ์เป็น 3 นั่นคือข้อมูลลำดับที่ 4 (เพราะนับเริ่มจาก 0) เป็นตัวแรก และข้อมูลลำดับที่ 6-1 นั่นคือข้อมูลที่มีอินเด็กซ์เป็น 5 เป็นตัวสุดท้าย

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

mylist = ["Swift", "Python", "Java", "Kotlin", "HTML", "Objective-C", "C#"]
print(mylist[:6])

แต่ถ้าระบุเฉพาะอินเด็กซ์เริ่มต้น ว่างอินเด็กซ์สิ้นสุดไว้ จะได้ข้อมูลต้องแต่ลำดับที่ระบุในอินเด็กซ์ไปจนถึงข้อมูลลำดับสุดท้าย

mylist = ["Swift", "Python", "Java", "Kotlin", "HTML", "Objective-C", "C#"]
print(mylist[2:])

การเข้าถึงข้อมูล List แบบกำหนดช่วงข้อมูล เราสามารถระบุเป็นค่าตัวเลขติดลบได้เช่นกัน

mylist = ["Swift", "Python", "Java", "Kotlin", "HTML", "Objective-C", "C#"]
print(mylist[-4:-1])

จากตัวอย่าง จะได้ข้อมูลตั้งแต่ลำดับที่ -4 (ลำดับที่ 4 นับจากจำดับสุดท้าย คือ Kotlin) ไปจนถึงข้อมูลลำดับที่อยู่ก่อนลำดับ -1 (คือลำดับ -2 ซึ่งหมายถึงข้อมูลลำดับที่ 2 นับจากลำดับสุดท้าย นั่นก็คือ Objective-C นั่นเอง)

การเปลี่ยนแปลงข้อมูลในลิสต์ List

เราสามารถเปลี่ยนแปลงข้อมูลในลิสต์ List ได้ โดยระบุอินเด็กซ์ของลิสต์ แล้วกำหนดค่าใหม่ลงไปได้เลย

ตัวอย่างการเปลี่ยนแปลงข้อมูลใน List

mylist = ["Swift", "Python", "Java", "Kotlin", "HTML", "Objective-C", "C#"]
mylist[0] = 'C++'
print(mylist)

บรรทัดที่ 2 เข้าถึงข้อมูลในลิสต์โดยระบุอินเด็กซ์ 0 ซึ่งหมายถึงข้อมูลลำดับที่ 1 และกำหนดค่าใหม่ลงไป ข้อมูลเดิมเป็น Swift ข้อมูลใหม่เป็น C++

การใช้ลูป Loop เข้าถึงข้อมูลใน List

เราสามารถใช้ลูป for เข้าถึงข้อมูลใน List ได้ ดังตัวอย่าง

mylist = ["Swift", "Python", "Java", "Kotlin", "HTML", "Objective-C", "C#"]
for x in mylist:
    print(x) 

จากโค้ดด้านบน เป็นการใช้ลูป for เข้าถึงสมาชิกใน List แล้วแสดงผลออกมาทีละลำดับดับ

การตรวจสอบข้อมูลในลิสต์ List

เราสามารถตรวจสอบว่ามีข้อมูลที่เราต้องการอยู่ในลิสต์ List หรือไม่ โดยใช้คีย์เวิร์ด in

mylist = ["Swift", "Python", "Java", "Kotlin", "HTML", "Objective-C", "C#"]
if "Python" in mylist:
    print("Yes, 'Python' is in the list")

บรรทัดที่ 2 ใช้คีย์เวิร์ด in ตรวจสอบว่ามีข้อมูลตามที่เราระบุอยู่ในลิสต์หรือไม่

การตรวจสอบจำนวนสมาชิกในลิสต์ List

เราสามารถตรวจสอบจำนวนสมาชิกทั้งหมดใน List ได้โดยการใช้ฟังก์ชัน len() ดังนี้

mylist = ["Swift", "Python", "Java", "Kotlin", "HTML", "Objective-C", "C#"]
print(len(mylist)) #7

ฟังก์ชัน len() จะคืนค่ากลับมาเป็นจำนวนสมาชิกทั้งหมดในลิสต์

การเพิ่มสมาชิกใน List

เราสามารถเพิ่มข้อมูลหรือสมาชิกใหม่เข้าไปใน List ได้ โดยใช้เมธอด append() โดยข้อมูลที่เพิ่มเข้าไปใหม่จะถูกเพิ่มต่อท้ายข้อมูลลำดับสุดท้ายในลิสต์ ดังนี้

mylist = ["Swift", "Python", "Java", "Kotlin", "HTML", "Objective-C", "C#"]
mylist.append("C++")
print(mylist)

บรรทัดที่ 2 ใช้เมธอด append() เพิ่มข้อมูลใหม่ในลิสต์

ถ้าต้องการแทรกข้อมูลใหม่เข้าไปในลิสต์โดยการระบุตำแหน่งอินเด็กซ์ สามารถทำได้โดยการใช้เมธอด insert() โดยมีรูปแบบการใช้งานดังนี้

insert(index, data)
  • index คือตำแหน่งที่ต้องการแทรกข้อมูลในลิสต์
  • data คือข้อมูลที่ต้องการแทรกในลิสต์

ตัวอย่างการใช้งานเมธอด insert()

mylist = ["Swift", "Python", "Java", "Kotlin", "HTML", "Objective-C", "C#"]
mylist.insert(1, "C++")
print(mylist)

บรรทัดที่ 2 ใช้เมธอด insert() แทรกข้อมูล “C++” โดยระบุอินเด็กซ์เป็น 1 ซึ่งก็คือตำแหน่งที่ 2 ในลิสต์นั่นเอง

การลบข้อมูลออกจากลิสต์ List

เราสามารถลบข้อมูลประเภทลิสต์ List ได้หลายวิธี ดังนี้

ลบข้อมูลด้วยเมธอด remove()

เราสามารถลบข้อมูลออกจากลิสต์โดยใช้เมธอด remove() โดยมีวิธีใช้งานดังนี้

mylist = ["Swift", "C++", "Python", "Java", "Kotlin", "HTML", "Objective-C", "C#"]
mylist.remove("C++")
print(mylist)

บรรทัดที่ 2 ใช้เมธอด remove() ลบข้อมูลออกจากลิสต์ โดยระบุข้อมูลที่ต้องการลบ

ลบข้อมูลโดยใช้เมธอด pop()

เราสามารถใช้เมธอด pop() ลบข้อมูลลิสต์ โดยการระบุอินเด็กซ์ที่ต้องการลบ (หรือถ้าไม่ระบุอินเด็กซ์ จะเป็นการลบข้อมูลตัวสุดท้าย)

ตัวอย่างการใช้เมธอ pop() แบบระบุอินเด็กซ์

mylist = ["Swift", "C++", "Python", "Java", "Kotlin", "HTML", "Objective-C", "C#"]
mylist.pop(1)
print(mylist)

จากตัวอย่าง ใช้เมธอด pop() โดยระบุอินเด็กซ์เป็น 1 ข้อมูลลำดับที่ 2 จะถูกลบออกไป

ตัวอย่งการใช้เมธอด pop() แบบไม่ระบุอินเด็กซ์

mylist = ["Swift", "C++", "Python", "Java", "Kotlin", "HTML", "Objective-C", "C#"]
mylist.pop()
print(mylist)

เมื่อใช้เมธอด pop() โดยไม่ระบุอินเด็กซ์ ข้อมูลลำดับสุดท้ายจะถูกลบออกไป

ลบข้อมูลโดยใช้คีย์เวิร์ด del

เราสามารถใช้คีย์เวิร์ด del ลบข้อมูลที่ต้องการออกจาก List โดยระบุอินเด็กซ์ข้อมูลที่ต้องการลบ โดยมีวิธีการใช้งานดังนี้

mylist = ["Swift", "C++", "Python", "Java", "Kotlin", "HTML", "Objective-C", "C#"]
del mylist[1]
print(mylist)

บรรทัดที่ 2 ใช้คีย์เวิร์ด del ตามด้วยชื่อตัวแปร List โดยมีการระบุอินเด็กซ์ไว้ใน [] จะเป็นการลบข้อมูลในอินเด็กซ์ที่ระบุ

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

mylist = ["Swift", "C++", "Python", "Java", "Kotlin", "HTML", "Objective-C", "C#"]
del mylist

โค้ดบรรทัดที่ 2 จะเป็นการลบลิสต์ทิ้งไป

ลบข้อมูลด้วยเมธอด clear()

เราสามารถลบข้อมูลทั้งหมดในลิสต์ด้วยเมธอด clear() ซึ่งจะเป็นการลบสมาชิกทั้งหมดในลิสต์

mylist = ["Swift", "C++", "Python", "Java", "Kotlin", "HTML", "Objective-C", "C#"]
mylist.clear()
print(mylist)

บรรทัดที่ 2 ใช้เมธอด clear() ลบข้อมูลทั้งหมดในลิสต์

การคัดลอกลิสต์

เราสามารถคัดลอกหรือทำสำเนารายการลิสต์ List ได้หลายวิธี ดังนี้

คัดลอกลิสต์ด้วยเมธอด copy()

เราสามารถใช้เมธอด copy() เพื่อทำการคัดลอกลิสต์ได้ โดยมีวิธีใช้งานดังนี้

mylist = ["Swift", "C++", "Python", "Java", "Kotlin", "HTML", "Objective-C", "C#"]
yourlist = mylist.copy()
print(mylist)
print(yourlist)

บรรทัดที่ 2 สร้างตัวแปร yourlist ขึ้นมาใหม่ โดยทำการคัดลอกข้อมูลในตัวแปร mylist ด้วยเมธอด copy()

คัดลอกลิสต์ด้วยเทธอด list()

อีกวิธีที่สามารถคัดลอกลิสต์ได้ ก็คือ การใช้เมธอด list()

mylist = ["Swift", "C++", "Python", "Java", "Kotlin", "HTML", "Objective-C", "C#"]
yourlist = list(mylist)
print(mylist)
print(yourlist)

การจอยลิสต์ List

เราสามารถรวมลิสต์หลาย ๆ ลิสต์เข้าด้วยกันได้หลายวิธี และวิธีที่ง่ายที่สุดคือการใช้โอเปอเรเตอร์ +

mylist = ["Swift", "C++", "Python", "Java", "Kotlin", "HTML", "Objective-C", "C#"]
yourlist = ["One", "Two", "Three", "Four", "Five", "Six", "Seven"]

ourlist = mylist + yourlist

print(ourlist)
#ourlist will be ['Swift', 'C++', 'Python', 'Java', 'Kotlin', 'HTML', 'Objective-C', 'C#', 'One', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven']

อีกวิธีคือการวนลูปอ่านข้อมูลในลิสต์ต้นทางแล้วเอาไปต่อท้ายลิสต์ต้นทางทีละลำดับ โดยใช้เมธอด append() ดังตัวอย่าง

mylist = ["Swift", "C++", "Python", "Java", "Kotlin", "HTML", "Objective-C", "C#"]
yourlist = ["One", "Two", "Three", "Four", "Five", "Six", "Seven"]

for x in yourlist:
  mylist.append(x)

print(mylist)

วิธีที่ง่าย ๆ อีกวิธีสำหรับการรวมลิสต์ 2 รายการเข้าด้วยกันคือ การใช้งานเมธอด extend() โดยมีรูปแบบการใช้งานดังนี้

mylist = ["Swift", "C++", "Python", "Java", "Kotlin", "HTML", "Objective-C", "C#"]
yourlist = ["One", "Two", "Three", "Four", "Five", "Six", "Seven"]

mylist.extend(yourlist)

print(mylist)

เมธอดของข้อมูลประเภท List

เมธอดที่น่าสนใจสำหรับข้อมูลประเภท List มีดังนี้

ชื่อเมธอดคำอธิบาย
append()เพิ่มเอลิเมนต์ต่อท้าย List
clear()ลบเอลิเมนต์ใน List
copy()คัดลอก List
count()นับจำนวนข้อมูลที่ระบุที่ปรากฏใน List
extend()เพิ่มเอลิเมนต์หรือข้อมูลประเภทรายการอื่น ๆ ต่อท้าย List
index()ค้นหาข้อมูลที่ระบุแล้วคืนค่ากลับมาเป็น index ของข้อมูลนั้นที่เจอครั้งแรก
insert()แทรกเอลิเมนต์เข้าไปใน List ณ ตำแหน่งที่ระบุ
pop()ลบเอลิเมนต์ ณ ตำแหน่งที่ระบุ
remove()ลบเอลิเมนต์ที่มีค่าตามที่ระบุ
reverse()เรียงเอลิเมนต์กลับด้าน
sort()จัดเรียงเอลิเมนต์ใน List