ใช้ List ทำเป็น Stacks ใน Python3

แชร์ความรู้ภาษา Python ไพทอน การเขียนโปรแกรมภาษาไพทอน

Moderator: mindphp, ผู้ดูแลกระดาน

annie2301
PHP Super Member
PHP Super Member
โพสต์: 289
ลงทะเบียนเมื่อ: 01/12/2021 9:44 am

ใช้ List ทำเป็น Stacks ใน Python3

โพสต์ที่ยังไม่ได้อ่าน โดย annie2301 »

Stacks คือ ชุดข้อมูลที่มีลำดับการเข้า ซึ่งจะเก็บอยู่ในรูปแบบ Liner list มีการทำงานแบบ LIFO (Last In First Out) ของที่ใส่ที่หลังสุดต้องเอาออกก่อนอันอื่น ยกตัวอย่างเช่น เราจะใส่ของใส่กล่อง สมมติว่าของมันพอดีกับกล่องแบบพอหยิบของเข้า - ออกได้ และในกล่องมีการจำกัดจำนวนของที่ใส่ได้ ในบทความนี้จะใช้ Datatype เป็น list ในการใช้ทำเป็น Stack

เวลาใส่ของเข้าไปในกล่อง
  • ถ้าในกล่องไม่ว่าง และของยังไม่เต็มกล่อง
    • ของอันใหม่ จะอยู่ข้างบน ของอันเก่า
  • ถ้าในกล่องว่าง
    • ก็ใส่ลงไปในกล่องปกติ
  • ถ้าในกล่องไม่ว่าง และของเต็มกล่องแล้ว
    • จะไม่ใส่ของลงในกล่องอีก
เวลาเอาของออกจากกล่อง
  • ถ้าในกล่องไม่ว่าง
    • เอาของจากด้านบนสุดออก
  • ถ้าในกล่องว่าง
    • ไม่ต้องเอาของออกแล้ว

มาเขียนโค้ดกันเถอะ

ใน python list จะไม่มีจำกัดจำนวน elemen ที่อยู่ใน list เอาไว้ ทำให้ stacks ก็จะเพิ่มขึ้นเรื่อยๆได้ แบบไม่มีจำกัดจำนวน element ถ้าไม่ได้เขียนกำหนดอะไรเพิ่มเติม (การเขียนกำหนดจำนวนเพิ่มเติมจะเอาไว้ต่อในบทความหน้า)

ในการ Push จะใช้ method append() ในการดำเนินการ (เอามาต่อท้าย list)
ในการ Pop จะใช้ method pop() ในการดำเนินการ (เอาตัวท้ายสุดของ list ออก)

โค้ด: เลือกทั้งหมด

# using a list as a stack
print('Stack had been created!')
stack = [] # create a empty stack
print(f'Stack = {stack}')
print()

# pushing
stack.append('math book')
print(f'A |{stack[-1]}| had been pushed!')
print(f'Stack = {stack}')
print()

stack.append('science book')
print(f'A |{stack[-1]}| had been pushed!')
print(f'Stack = {stack}')
print()

stack.append('comic book')
print(f'A |{stack[-1]}| had been pushed!')
print(f'Stack = {stack}')
print()

# popping

print(f'A |{stack.pop()}| had been popped!') # pop the last element
print(f'Stack = {stack}')
print()
สร้าง Empty Stack มาหนึ่ง Stack โดยใช้ List

โค้ด: เลือกทั้งหมด

stack = [] # create a empty stack
push math book ลงใน Stack โดยใช้ method append() เอาไปต่อท้าย list

โค้ด: เลือกทั้งหมด

stack.append('math book')
push science book ลงใน Stack โดยใช้ method append() เอาไปต่อท้าย list

โค้ด: เลือกทั้งหมด

stack.append('science book')
push comic book ลงใน Stack โดยใช้ method append() เอาไปต่อท้าย list

โค้ด: เลือกทั้งหมด

stack.append('comic book')
pop comic book ออกจาก Stack โดยใช้ method pop() ถ้าไม่ใส่ argument จะ เอาตัวสุดท้ายออกของ list ออก

โค้ด: เลือกทั้งหมด

stack.pop()

ผลลัพธ์ของโปรแกรม
รูปภาพผลลัพธ์ที่ Create , Push, Pop Stack ใน Python3
รูปภาพผลลัพธ์ที่ Create , Push, Pop Stack ใน Python3
stack_programming_result.png (11.23 KiB) Viewed 1282 times
ตอนสุดท้ายจะเหลือหนังสือ แค่ ["math book", "science book"] เพราะได้เอา comic book ออก โดย method pop()


สรุป

ในการทำ stack เราไม่ได้ เปลี่ยนเป็น type หรือ class อื่น ไม่เหมือนอย่าง การทำ Queues โดยใช้ list ในบทความนี้ใช้ Datatype เป็น list และใช้ method ของ list ไม่มีอะไรพิเศษหรือแปลกใหม่ (ถ้าไม่มีการจำกัดจำนวน element ใน list ซึ่งจะต่อในบทความหน้า)


อ้างอิง

https://www.mindphp.com/forums/viewtopic.php?f=29&t=47306
https://www.mindphp.com/%E0%B8%9A%E0%B8%97%E0%B9%80%E0%B8%A3%E0%B8%B5%E0%B8%A2%E0%B8%99%E0%B8%AD%E0%B8%AD%E0%B8%99%E0%B9%84%E0%B8%A5%E0%B8%99%E0%B9%8C/83-python/3402-%E0%B8%95%E0%B8%B1%E0%B8%A7%E0%B9%81%E0%B8%9B%E0%B8%A3%E0%B8%8A%E0%B8%99%E0%B8%B4%E0%B8%94-list.html
https://www.mindphp.com/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD/73-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3/2203-data-type-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3.html
https://docs.python.org/3/tutorial/datastructures.html#using-lists-as-stacks
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 79