ลิสต์ (Lists) เป็นโครงสร้างข้อมูลในตัว (built-in) ใน Python 3 Python Lists สามารถใช้จัดระเบียบและจัดเก็บข้อมูลอย่างเป็นระบบ เช่น ชื่อผู้จัดหาสำหรับบริษัทผลิต ข้อมูลเงินเดือนสำหรับพนักงานบริษัท ลิสต์เกรดนักเรียน หรืออะไรก็ตาม
มีฟังก์ชันในตัวจำนวนหนึ่งใน Python ที่เราสามารถใช้เปลี่ยนแปลงหรือจัดการข้อมูลที่จัดเก็บในลิสต์ได้
ในคู่มือนี้ เราจะแยกวิเคราะห์เมธอดในตัวที่มีประโยชน์ที่สุดบางส่วนที่สามารถใช้ทำงานกับลิสต์ได้ เราจะสำรวจวิธีเพิ่มและลบองค์ประกอบจากลิสต์ นับจำนวนองค์ประกอบในลิสต์ กลับด้านลิสต์ และอื่นๆ
บทนำสรุป List
ลิสต์เป็นชนิดข้อมูลใน Python ที่เป็น mutable (เปลี่ยนแปลงได้) และเป็นการจัดเรียงรายการที่มีลำดับ นี่หมายความว่าลิสต์สามารถเปลี่ยนแปลงได้ และจัดเก็บข้อมูลในลำดับเฉพาะ
แต่ละองค์ประกอบภายในลิสต์เรียกว่า item และลิสต์ถูกกำหนดโดยค่าที่คั่นด้วยจุลภาคมิดล้อมด้วยวงเล็บเหลี่ยม ([])
นี่คือวิธีสร้างลิสต์ใน Python:
news_sites = ["New York Times", "Washington Post", "CNN", "BuzzFeed"]
เพื่อพิมพ์ลิสต์ของเรา เราสามารถใช้ฟังก์ชัน print():
print(news_sites)
โปรแกรมของเราคืนค่าอาร์เรย์ต้นฉบับตามที่เรากำหนด:
['New York Times', 'Washington Post', 'CNN', 'BuzzFeed']
เพื่อดึงองค์ประกอบเฉพาะจากลิสต์ Python เราต้องอ้างอิงดัชนีขององค์ประกอบ แต่ละรายการในลิสต์มีหมายเลขดัชนี เริ่มต้นที่ 0 ซึ่งช่วยให้เราดึงเนื้อหาขององค์ประกอบตัวเดียวได้ นี่คือค่าดัชนีสำหรับลิสต์ที่เราสร้างข้างต้น:
| New York Times | Washington Post | CNN | BuzzFeed |
| 0 | 1 | 2 | 3 |
ตอนนี้ที่เรารู้หมายเลขดัชนีขององค์ประกอบลิสต์ของเรา เราสามารถดึงค่าเฉพาะจากลิสต์ของเราได้ เพื่อทำเช่นนั้น เราสามารถใช้โค้ดต่อไปนี้:
print(news_sites[0])
โค้ดของเราคืนค่า: New York Times เช่นเดียวกัน หากเราอ้างอิงรายการลิสต์ที่มีค่าดัชนี 2 โค้ดของเราจะคืนค่า CNN
แต่ละรายการในลิสต์ของเรายังมีหมายเลขดัชนีลบ (negative index) นี่ช่วยให้เรานับถอยหลังบนลิสต์ได้ และมีประโยชน์หากลิสต์ของเรามีจำนวนค่ามาก และเราต้องการดึงค่าไปทางท้ายของลิสต์นั้น
นี่คือค่าดัชนีลบสำหรับลิสต์ของเราข้างต้น:
| New York Times | Washington Post | CNN | BuzzFeed |
| -4 | -3 | -2 | -1 |
หากเราต้องการได้รายการที่ตำแหน่งดัชนี -1 เราสามารถใช้โค้ดนี้:
print(news_sites[-1])
โค้ดของเราคืนค่า: BuzzFeed
ตอนนี้ที่เราครอบคลุมพื้นฐานของ Python lists แล้ว เราสามารถเริ่มสำรวจ Python list methods ได้
เพิ่มองค์ประกอบด้วย list.append()
เมธอด list.append() ช่วยให้คุณเพิ่มรายการไปท้ายลิสต์ นี่คือตัวอย่างของลิสต์ที่จัดเก็บรสชาติพิซซ่า:
flavors = ["Ham and Pineapple", "Cheese", "Mexican", "Chicken", "Pepperoni"]
ลิสต์ของเราประกอบด้วย 5 ค่า เริ่มจากค่าดัชนี 0 และจบที่ค่าดัชนี 4 แต่ถ้าเราต้องการเพิ่มตัวเลือก meat-lovers เข้าไปในลิสต์ของเรา? เราสามารถใช้เมธอด append() เพื่อดำเนินการนี้
นี่คือตัวอย่างของ append() ที่ใช้เพิ่ม Meat-Lovers เข้าไปในลิสต์ของเรา:
flavors.append("Meat-Lovers")
print(flavors)
โค้ดของเราคืนค่าลิสต์ที่แก้ไขแล้วพร้อม Meat-Lovers ที่ท้าย:
['Ham and Pineapple', 'Cheese', 'Mexican', 'Chicken', 'Pepperoni', 'Meat-Lovers']
แทรกเข้าไปในลิสต์ด้วย list.insert()
เมธอด append() ช่วยให้คุณเพิ่มรายการท้ายลิสต์ แต่หากคุณต้องการเพิ่มรายการที่ตำแหน่งดัชนีเฉพาะ เมธอด insert() จะแทรกรายการที่ตำแหน่งไหนก็ได้ในลิสต์
สมมติว่าหัวหน้าเชฟพิซซ่าของเรากำลังทำสเปเชียลในร้านกับพริกหยวก และพร้อมที่จะเพิ่มลงในเมนู เชฟต้องการให้พิซซ่านี้อยู่บนสุดของลิสต์รสชาติของเรา เพื่อดึงดูดลูกค้าใหม่ให้ลองพิซซ่า
เราสามารถใช้เมธอด insert() เพื่อบรรลุเป้าหมายนี้ เมธอด insert() รับสองอาร์กิวเมนต์: ตำแหน่งดัชนีที่คุณต้องการเพิ่มรายการ และรายการที่คุณต้องการเพิ่มเข้าไปในลิสต์ นี่คือตัวอย่างของ insert() ที่ใช้เพิ่ม Jalapeno Special ไปที่ต้นทางของลิสต์ flavors:
flavors.insert(0, "Jalapeno Special") print(flavors)
โค้ดของเราคืนค่าลิสต์ต่อไปนี้:
['Jalapeno Special', 'Ham and Pineapple', 'Cheese', 'Mexican', 'Chicken', 'Pepperoni', 'Meat-Lovers']
ตามที่คุณเห็น Jalapeno Special ถูกเพิ่มที่ต้นทางของลิสต์ของเรา และได้รับหมายเลขดัชนี 0 รายการอื่นๆ ในลิสต์ของเราเลื่อนขึ้น และได้รับหมายเลขดัชนีใหม่ที่สอดคล้องกับตำแหน่งใหม่ในลิสต์ Ham and Pineapple ตัวอย่างเช่น ตอนนี้มีค่าดัชนี 1 และอื่นๆ ตามลำดับ
ลบจากลิสต์ด้วย list.remove()
เพื่อลบรายการจากลิสต์ Python เราสามารถใช้เมธอด list.remove() เมธอดนี้ลบรายการแรกจากลิสต์ที่มีค่าเท่ากับค่าที่เราระบุ
หลังจากลองทำ Jalapeno Special หนึ่งสัปดาห์ พบว่าลูกค้าห้องครัวพิซซ่าไม่ชอบรสชาตินี้ ดังนั้นเชฟต้องการลบมันออกจากเมนูขณะที่เขาปรับสูตร เราสามารถใช้โค้ดต่อไปนี้เพื่อลบ Jalapeno Special จากลิสต์ของเรา:
flavors.remove("Jalapeno Special")
print(flavors)
โค้ดของเราคืนค่าลิสต์ที่แก้ไขแล้วโดยไม่มี Jalapeno Special:
['Ham and Pineapple', 'Cheese', 'Mexican', 'Chicken', 'Pepperoni', 'Meat-Lovers']
มีบางสิ่งที่คุณควรรู้เกี่ยวกับเมธอด remove() แรก หากคุณพยายามลบรายการที่ไม่มีอยู่ในลิสต์ ข้อผิดพลาด not in list จะปรากฏ สอง เมธอด remove() ลบเพียงอินสแตนซ์แรกของรายการลิสต์ หากคุณมี Jalapeno Specials สองตัวในลิสต์ คุณจะต้องรันเมธอด remove() สองครั้งเพื่อลบทั้งสอง
ลบจากลิสต์ด้วย list.pop()
เมธอด list.pop() สามารถใช้ลบและคืนค่ารายการจากลิสต์ได้
เมธอด pop() รับอาร์กิวเมนต์ตัวเลือกหนึ่ง: ค่าดัชนีขององค์ประกอบที่เราต้องการลบจากลิสต์ของเรา หากเราไม่ระบุดัชนี pop() จะคืนค่าและลบรายการท้ายสุดในลิสต์ของเรา
ห้องครัวพิซซ่าของเราตัดสินใจว่า พิซซ่า Meat-Lovers ควรย้ายไปเมนูสเปเชียล ซึ่งรวมช่วงพิซซ่าทดลองใหม่ของเชฟ ดังนั้นเชฟต้องการลบ Meat-Lovers ออกจากลิสต์รสชาติพิซซ่า
นี่คือโค้ดที่เราจะใช้เพื่อลบ Meat-Lovers (ซึ่งมีค่าดัชนี 5 จากลิสต์ของเรา):
flavors = ["Ham and Pineapple", "Cheese", "Mexican", "Chicken", "Pepperoni", "Meat-Lovers"] print(flavors.pop(5)) print(flavors)
โค้ดของเราคืนค่า:
Meat-Lovers ['Ham and Pineapple', 'Cheese', 'Mexican', 'Chicken', 'Pepperoni']
ตามที่คุณเห็น ฟังก์ชัน pop() ลบค่าที่เราระบุและคืนค่าของรายการลิสต์ที่เราลบ ซึ่งในกรณีนี้คือ Meat-Lovers จากนั้นเราพิมพ์ลิสต์ใหม่ ซึ่งไม่รวม Meat-Lovers แล้ว
รวมหลายลิสต์ด้วย list.extend()
เมธอด list.extend() สามารถใช้รวมหลายลิสต์ใน Python ได้ เมธอด extend() รับอาร์กิวเมนต์หนึ่ง: ออบเจ็กต์ลิสต์ที่คุณต้องการเพิ่มเข้าไปในลิสต์ที่มีอยู่
เชฟพิซซ่าของเราตัดสินใจว่าเมนูสเปเชียลควรรวมกับเมนูมาตรฐาน เพราะลูกค้ารายงานว่าสับสนกับเมนูแยกสองเมนู เพื่อรวมเมนูทั้งสองของเรา เราจะใช้โค้ดต่อไปนี้:
flavors = ["Ham and Pineapple", "Cheese", "Mexican", "Chicken", "Pepperoni"] special_menu = ["Meat-Lovers", "BBQ Chicken", "Sausage and Pepperoni", "Vegetarian Special", "Greek"] flavors.extend(special_menu) print(flavors)
โปรแกรมของเราคืนค่าดังนี้:
['Ham and Pineapple', 'Cheese', 'Mexican', 'Chicken', 'Pepperoni', 'Meat-Lovers', 'BBQ Chicken', 'Sausage and Pepperoni', 'Vegetarian Special', 'Greek']
ตามที่คุณเห็น ลิสต์ flavors ของเราตอนนี้รวมรายการจากลิสต์ flavors เก่า และลิสต์ special_menu ของเรา
คัดลอกลิสต์ด้วย list.copy()
เมธอด list.copy() ช่วยให้คุณสร้างสำเนาของลิสต์ นี่อาจมีประโยชน์หากคุณต้องการจัดการลิสต์แต่ต้องการเก็บลิสต์ต้นฉบับไว้ ในกรณีที่คุณต้องอ้างอิงมันอีกครั้ง
เชฟพิซซ่าของเราตัดสินใจทดลองกับเมนูอีก เพิ่มพิซซ่าใหม่สองชนิดเข้าเมนู อย่างไรก็ตาม เขาต้องการเก็บลิสต์เมนูต้นฉบับไว้เพื่ออ้างอิง
เราสามารถใช้โค้ดต่อไปนี้เพื่อสร้างสำเนาของเมนู ซึ่งเขาสามารถเพิ่มพิซซ่าใหม่ของเขาได้ในขณะที่รักษาลิสต์ต้นฉบับไว้:
new_menu = menu.copy() print(menu)
โค้ดของเราคืนค่า:
['Ham and Pineapple', 'Cheese', 'Mexican', 'Chicken', 'Pepperoni', 'Meat-Lovers', 'BBQ Chicken', 'Sausage and Pepperoni', 'Vegetarian Special', 'Greek']
ตอนนี้ เรามีสองลิสต์ที่มีค่าเหมือนกัน: flavors และ new_menu ดังนั้น เชฟสามารถปรับเปลี่ยน new_menu ในขณะที่ยังคงเก็บลิสต์ flavors ไว้สมบูรณ์
เรียงลำดับลิสต์ด้วย list.sort()
เมธอด list.sort() สามารถใช้เรียงลำดับรายการในลิสต์ได้
เชฟของเราตัดสินใจว่าลิสต์ของเราควรเรียงตามลำดับอักษร เพื่อให้คนหาพิซซ่าที่ต้องการได้ง่ายขึ้น โค้ดต่อไปนี้ uses sort() เพื่อจัดเรียงลิสต์ของเราในลำดับอักษร:
flavors.sort() print(flavors)
โค้ดของเราคืนค่า:
['BBQ Chicken', 'Cheese', 'Chicken', 'Greek', 'Ham and Pineapple', 'Meat-Lovers', 'Mexican', 'Pepperoni', 'Sausage and Pepperoni', 'Vegetarian Special']
คุณยังสามารถใช้ฟังก์ชัน sort() บนลิสต์ตัวเลขได้ ซึ่งจะเรียงในลำดับจากน้อยไปมาก
กลับด้านลิสต์ด้วย list.reverse()
เมธอด list.reverse() สามารถใช้กลับลำดับรายการในลิสต์ได้
ฟังก์ชันนี้ไม่ได้เรียงลิสต์ในลำดับจากมากไปน้อย แต่กลับลำดับของทุกรายการในลิสต์ของเรา ดังนั้นรายการท้ายสุดในลิสต์ของเราจะกลายเป็นรายการแรกในลิสต์ใหม่ และรายการลำดับที่สองจากท้ายจะกลายเป็นรายการที่สอง และต่อไป
เชฟพิซซ่าของเราตัดสินใจว่าเขาต้องการลิสต์พิซซ่าเรียงในลำดับจากมากไปน้อย เพราะเขาสังเกตเห็นการเติบโตของยอดขายจากท้ายเมนู นี่คือโค้ดที่เราจะใช้เพื่อกลับด้านลิสต์ของเรา:
flavors = ['BBQ Chicken', 'Cheese', 'Chicken', 'Greek', 'Ham and Pineapple', 'Meat-Lovers', 'Mexican', 'Pepperoni', 'Sausage and Pepperoni', 'Vegetarian Special'] flavors.reverse() print(flavors)
โค้ดของเราคืนค่าดังนี้:
['Vegetarian Special', 'Sausage and Pepperoni', 'Pepperoni', 'Mexican', 'Meat-Lovers', 'Ham and Pineapple', 'Greek', 'Chicken', 'Cheese', 'BBQ Chicken']
ตามที่คุณเห็น Vegetarian Special เป็นรายการท้ายสุดในลิสต์ต้นฉบับของเรา และตอนนี้มันเป็นรายการแรก — ลิสต์ของเราถูกกลับด้านแล้ว
ล้างลิสต์ด้วย list.clear()
เมธอด list.clear() ช่วยให้คุณลบค่าทั้งหมดภายในลิสต์
เดือนใหม่มาถึงห้องครัวพิซซ่า และเชฟต้องการล้างลิสต์ยอดขายเดือนมกราคม และเริ่มลิสต์ใหม่สำหรับเดือนกุมภาพันธ์ นี่คือโค้ดที่สามารถใช้ล้างลิสต์ sales ของเราเพื่อทำที่สำหรับเดือนกุมภาพันธ์:
sales.clear() print(sales)
โค้ดของเราคืนค่าลิสต์ที่ไม่มีค่า: []
สรุป
ลิสต์เป็นการจัดเรียงรายการที่ mutable (เปลี่ยนแปลงได้) และมีลำดับ ที่สามารถใช้จัดเก็บข้อมูลที่คล้ายกันได้ ในบทช่วยสอนนี้ เราแยกวิเคราะห์ Python list methods บางส่วนที่พบบ่อยที่สุด ซึ่งสามารถใช้จัดการลิสต์ของเราและเก็บข้อมูลเชิงลึกเกี่ยวกับข้อมูลในลิสต์ของเรา
เราครอบคลุมวิธีใช้ append(), insert(), remove(), pop(), extend(), copy(), sort(), reverse(), และ clear() list methods ในบทความนี้ และสำรวจตัวอย่างของแต่ละเมธอดในการทำงาน
ตอนนี้คุณพร้อมที่จะทำงานกับ Python list methods อย่างมืออาชีพแล้ว!