Python ตอนที่ 67 การเข้าถึงข้อมูลใน List

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

my_list = ['iPhone', 'iPad', 'iPod']

print(my_list[0])

ผลลัพธ์

iPhone

การระบุอินเด็กซ์ติดลบ

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

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

my_list = ['iPhone', 'iPad', 'iPod']

print(my_list[-1])

ผลลัพธ์

iPod

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

การเข้าถึงข้อมูลเป็นช่วง

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

list[2:6]

เป็นการเข้าถึงข้อมูลเริ่มจากอินเด็กซ์ 2 (ซึ่งหมายถึงข้อมูลลำดับที่ 3) ไปจนถึงอินเด็กซ์ 6 (ซึ่งอินเด็กซ์ 6 จะไม่ถูกรวมเข้ามา นั่นก็หมายความว่า เราจะได้ข้อมูลถึงอินเด็กซ์ 5 (ซึ่งหมายถึงข้อมูลตัวที่ 6 ใน List) เท่านั้น)

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

เพื่อความเข้าใจมากยิ่งขึ้น มาดูตัวอย่างกันดีกว่า

my_list = ['iPhone', 'iPad', 'iPod', 'Samsung', 'Vivo', 'Wiko', 'Nokia', 'Oppo']

print(my_list[2:6])

ผลลัพธ์

[‘iPod’, ‘Samsung’, ‘Vivo’, ‘Wiko’]

ลำดับข้อมูลใน List เป็นดังนี้

คำสั่ง print(my_list[2:6]) หมายถึง ให้เอาข้อมูลลำดับ 2 ถึงลำดับ 6-1 (เท่ากับ 5) จึงเป็นที่มาของผลลัพธ์ตามตัวอย่าง

สำหรับการเข้าถึงข้อมูลแบบช่วงดังกล่าว ถ้าเราเว้นอินเด็กซ์เริ่มต้นไว้ จะหมายถึงการเข้าถึงข้อมูลตั้งแต่ลำดับแรก คืออินเด็กซ์ 0 นั่นเอง ดังตัวอย่าง

my_list = ['iPhone', 'iPad', 'iPod', 'Samsung', 'Vivo', 'Wiko', 'Nokia', 'Oppo']

print(my_list[:6])

ผลลัพธ์

[‘iPhone’, ‘iPad’, ‘iPod’, ‘Samsung’, ‘Vivo’, ‘Wiko’]

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

my_list = ['iPhone', 'iPad', 'iPod', 'Samsung', 'Vivo', 'Wiko', 'Nokia', 'Oppo']

print(my_list[2:])

ผลลัพธ์

[‘iPod’, ‘Samsung’, ‘Vivo’, ‘Wiko’, ‘Nokia’, ‘Oppo’]

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

list[-5:-1]

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

ดังตัวอย่าง

my_list = ['iPhone', 'iPad', 'iPod', 'Samsung', 'Vivo', 'Wiko', 'Nokia', 'Oppo']

print(my_list[-5:-1])

ผลลัพธ์

[‘Samsung’, ‘Vivo’, ‘Wiko’, ‘Nokia’]

ตรวจสอบว่ามีข้อมูลที่ต้องการอยู่ใน List หรือไม่

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

stock = ['iPhone', 'iPad', 'iPod', 'Samsung', 'Vivo', 'Wiko', 'Nokia', 'Oppo']

if "iPhone" in stock:
    print("There is iPhone in stock.")

ผลลัพธ์

There is iPhone in stock.