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

Python Stack: ใช้ List และ collections.deque สร้าง Stack (LIFO)

Stack (สแต็ก) เป็นโครงสร้างข้อมูลแบบ Last-In, First-Out (LIFO) ตัวที่เพิ่มเข้ามาสุดท้ายจะถูกนำออกก่อน (เหมือนจานซ้อนกัน) ตรงข้ามกับ Queue (FIFO) รองรับ 2 Operation หลัก: Push (เพิ่ม) และ Pop (นำออก)

วิธีที่ 1: ใช้ Built-in List

List ใน Python เป็น Dynamic Array รองรับ append() (Push) และ pop() (Pop) ได้อย่างมีประสิทธิภาพที่ปลาย List

Push (เพิ่มข้อมูล)

assignments = []
assignments.append("Hannah")
assignments.append("Benny")
assignments.append("Gordon")
print(assignments)  # ['Hannah', 'Benny', 'Gordon']

Pop (นำข้อมูลออก)

assignments.pop()  # นำ Gordon ออก
print(assignments)  # ['Hannah', 'Benny']

วิธีที่ 2: ใช้ collections.deque

deque (Double-Ended Queue) เป็น Doubly-Linked List มี Performance ดีและคงที่สำหรับ Insert/Delete ทั้งสองข้าง เป็นส่วนหนึ่งของ Standard Library

from collections import deque

stack = deque()
stack.append("Hannah")
stack.append("Benny")
stack.append("Gordon")
print(stack)  # deque(['Hannah', 'Benny', 'Gordon'])

stack.pop()
stack.pop()
print(stack)  # deque(['Hannah'])

เปรียบเทียบ List vs deque สำหรับ Stack

ด้านListdeque
Push/Pop ที่ปลายO(1) AmortizedO(1) คงที่
Memory Overheadน้อยกว่ามากกว่า (Node-based)
Thread Safetyไม่Atomic operations (ปลอดภัยกว่า)
ความสะดวกBuilt-in ไม่ต้อง Importต้อง Import

สำหรับ Stack แบบง่าย ใช้ List เพียงพอ หากต้องการ Performance สูงสุดหรือ Thread Safety ใช้ deque

สรุป

Stack ใน Python สร้างได้ง่ายด้วย list.append()/pop() หรือ collections.deque ทั้งคู่รองรับ LIFO ครบถ้วน เลือกใช้ตามความต้องการของโปรเจกต์