สแต็คเป็นโครงสร้างข้อมูลที่สำคัญพร้อมการใช้งานที่หลากหลาย
ในการเขียนโปรแกรม สแต็คช่วยให้คุณสามารถจัดเก็บข้อมูลตามลำดับเข้าก่อนออกก่อน (LIFO) ซึ่งหมายความว่ารายการสุดท้ายที่เก็บไว้ในสแต็กเป็นรายการแรกที่จะถูกประมวลผล
แต่คุณจะสร้างสแต็กใน Python ได้อย่างไร นั่นคือคำถามที่เราจะตอบในคู่มือนี้ เมื่ออ่านคู่มือนี้จบ คุณจะเป็นผู้เชี่ยวชาญในการสร้างและทำงานกับสแต็คใน Python
Python Stacks
สแต็คจัดเก็บข้อมูลตามลำดับเข้าก่อนออกก่อน (LIFO)
เพื่อช่วยให้คุณเข้าใจว่าคำสั่งนี้ทำงานอย่างไร ให้พิจารณากองจาน เมื่อคุณมีกองจานที่ต้องทำความสะอาด จานแรกที่คุณจะย้ายคือจานที่อยู่ด้านบน จากนั้นเมื่อคุณย้ายจาน คุณจะสามารถเข้าถึงจานที่อยู่ด้านล่างในกองได้
สแต็คเป็นสิ่งที่ตรงกันข้ามกับคิวใน Python คิวจะลบรายการที่เพิ่มล่าสุด (เนื่องจากใช้โครงสร้างเข้าก่อน-ออกก่อน) ในขณะที่กองซ้อนจะลบรายการที่เพิ่มล่าสุด (เนื่องจากใช้โครงสร้างเข้าก่อน-ออกก่อน)
โดยทั่วไปสแต็คจะรองรับสองการดำเนินการ:พุชและป๊อป การกดทำให้คุณสามารถเพิ่มรายการที่ด้านบนสุดของสแตก และการเปิดป๊อปอัปทำให้คุณสามารถลบรายการที่ด้านบนสุดของสแตกได้
ใน Python มีสองวิธีหลักที่คุณสามารถใช้เพื่อสร้างสแต็ก:ใช้รายการในตัว และการใช้ collections.deque()
ระดับ. มาดูรายละเอียดว่าแต่ละวิธีทำงานอย่างไร
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
รายการในตัวของ Python
ชนิดข้อมูลรายการในตัวช่วยให้คุณสร้างสแต็กใน Python
เนื่องจากรายการ Python ถูกนำมาใช้เป็นอาร์เรย์ คุณจึงสามารถเพิ่มและลบรายการต่างๆ ได้อย่างง่ายดาย นอกจากนี้ ลำดับที่คุณแทรกค่าในรายการจะถูกรักษาไว้ ซึ่งหมายความว่าคุณสามารถลบรายการแรกและรายการสุดท้ายในรายการได้อย่างง่ายดาย
สมมติว่าเราต้องการสร้างกองที่เก็บรายการการบ้านในชั้นเรียน ครูต้องการให้คะแนนงานเหล่านี้ในลำดับที่ปรากฏในกอง (ดังนั้น งานที่ส่งก่อนจะอยู่ที่ด้านล่างสุดของกอง และงานที่ส่งสุดท้ายจะอยู่ที่ด้านบนสุดของกอง)
เพิ่มรายการลงในกอง
ในการเพิ่มรายการลงในสแต็ก เราสามารถใช้ append()
กระบวนการ. เราสามารถสร้างกองการบ้านโดยใช้รหัสต่อไปนี้:
assignments = [] assignments.append("Hannah") assignments.append("Benny") assignments.append("Gordon") print(assignments)
รหัสของเราส่งคืน:
['Hannah','Benny','Gordon']
ในโค้ดของเรา ขั้นแรกเราจะประกาศรายการที่เรียกว่า assignments
. จากนั้น เราใช้ append()
วิธีเพิ่มสามชื่อในรายการงานที่ได้รับมอบหมายของเราที่ส่งไปแล้ว ชื่อที่เราเพิ่มนั้นเรียงตามลำดับ:Hannah, Benny, Gordon เนื่องจากกอร์ดอนส่งงานมอบหมายครั้งสุดท้าย จึงปรากฏในตำแหน่งสุดท้ายในรายการของเรา
ลบรายการออกจากกอง
สมมติว่าเราให้คะแนนงานมอบหมายของกอร์ดอนแล้ว และต้องการค้นหาว่างานใดจะให้คะแนนใกล้เคียงกัน สิ่งนี้เกี่ยวข้องกับการลบรายการที่ด้านบนของสแต็กของเรา
หากต้องการลบรายการออกจากสแตกของเรา เราสามารถใช้ pop()
กระบวนการ. นี่คือรหัสที่เราสามารถนำมาใช้เพื่อลบรายการบนสุดบนกองของเรา:
assignments = [] assignments.append("Hannah") assignments.append("Benny") assignments.append("Gordon") assignments.pop() print(assignments)
รหัสของเราส่งคืน:
['Hannah','Benny']
ชื่อของ Gordon ถูกลบออกจากกองโดยใช้ pop()
ดังนั้นสแต็กของเราจึงมีเพียงสองชื่อ:Hannah และ Benny
collections.deque คลาส
คลาส deque ในไลบรารีคอลเลกชันช่วยให้คุณสร้างคิวแบบ double-ended
ออบเจ็กต์ deque ถูกนำไปใช้เป็นรายการที่เชื่อมโยงแบบทวีคูณ ซึ่งหมายความว่ามันมีประสิทธิภาพที่แข็งแกร่งและสม่ำเสมอเมื่อทำการแทรกและลบองค์ประกอบ นอกจากนี้ เนื่องจากไลบรารีคอลเลกชันเป็นส่วนหนึ่งของ Python Standard Library คุณจึงสามารถนำเข้าไปยังโค้ดของคุณได้โดยไม่ต้องดาวน์โหลดไลบรารี่ภายนอก
ในการทำงานกับ collections.deque
ขั้นแรกเราต้องนำเข้ารหัสของเราโดยใช้คำสั่งนำเข้า:
from collections import deque
กลับไปที่ตัวอย่างการบ้านของเราจากก่อนหน้านี้เพื่อแสดงให้เห็นว่าคลาส collections.deque ทำงานอย่างไร
เพิ่มไอเทมลงใน Deque Stack
ในการเพิ่มรายการลงในกอง deque เราสามารถใช้ append()
กระบวนการ. สมมติว่าเราต้องการสร้างคิวด้วยการบ้านโดยใช้ชั้นเรียนเดค เราสามารถทำได้โดยใช้รหัสนี้:
from collections import deque assignments = deque() assignments.append("Hannah") assignments.append("Benny") assignments.append("Gordon") print(assignments)
รหัสของเราส่งคืน:
deque(['Hannah','Benny','Gordon'])
มาทำลายรหัสของเรากัน ขั้นแรก เรานำเข้าคลาส deque จากไลบรารีคอลเลกชัน จากนั้น เราสร้าง deque โดยใช้ deque()
และกำหนดให้กับตัวแปร assignments
.
ต่อไป เราเพิ่มสามชื่อในการมอบหมายงานมอบหมาย:Hannah, Benny และ Gordon สุดท้าย เราพิมพ์เนื้อหาของคิวการมอบหมายของเราไปที่คอนโซล
คุณจะเห็นว่าในตัวอย่างนี้ ข้อมูลของเราถูกจัดเก็บในรูปแบบ deque แทนที่จะเป็น stack (แสดงโดยข้อเท็จจริงที่ผลลัพธ์ของเราอยู่ใน deque()
). เนื่องจากเราใช้โครงสร้าง deque แม้ว่าข้อมูลของเรายังคงทำหน้าที่เหมือนสแต็ก
ลบรายการออกจากกอง Deque
หากต้องการลบรายการออกจากสแต็ก deque คุณสามารถใช้ pop()
กระบวนการ.
สมมติว่าเราเพิ่งให้คะแนนงานมอบหมายของกอร์ดอนกับเบนนี่ หากต้องการลบออกจากสแต็กของเรา เราสามารถใช้รหัสต่อไปนี้:
from collections import deque assignments = deque() assignments.append("Hannah") assignments.append("Benny") assignments.append("Gordon") assignments.pop() assignments.pop() print(assignments)
รหัสของเราส่งคืน:
deque(['Hannah'])
ในโค้ดของเรา ขั้นแรกเราจะสร้าง deque stack ที่มีค่าสามค่า จากนั้น เราดำเนินการ pop()
คำสั่งสองครั้ง ทุกครั้งที่ pop()
คำสั่งทำงาน รายการที่ด้านบนของสแต็กของเราจะถูกลบออก ซึ่งหมายความว่าค่าของ Gordon และ Benny จะถูกลบออกจากกองของเรา ทำให้ Hannah เป็นไอเทมชิ้นเดียวที่เหลืออยู่ในกองของเรา
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับคลาส Python deque โปรดอ่านบทแนะนำเกี่ยวกับคิวและ deque ของ Python
บทสรุป
สแต็คช่วยให้คุณจัดเก็บข้อมูลตามลำดับเข้าก่อนออกก่อน มีหลายวิธีในการใช้สแต็กใน Python แต่สองวิธีที่ใช้งานได้จริงที่สุดคือการใช้โครงสร้างรายการในตัวของ Python หรือใช้ collections.deque()
ระดับ.
บทช่วยสอนนี้กล่าวถึงโดยอ้างอิงถึงตัวอย่าง วิธีสร้างสแต็กใน Python โดยใช้รายการและ collections.deque()
. ตอนนี้คุณพร้อมที่จะเริ่มสร้างสแต็คของคุณเองอย่างนักพัฒนา Python มืออาชีพแล้ว!