Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python Stack:A How-to Guide

สแต็คเป็นโครงสร้างข้อมูลที่สำคัญพร้อมการใช้งานที่หลากหลาย

ในการเขียนโปรแกรม สแต็คช่วยให้คุณสามารถจัดเก็บข้อมูลตามลำดับเข้าก่อนออกก่อน (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 มืออาชีพแล้ว!