Ngăn xếp là một cấu trúc dữ liệu quan trọng với nhiều mục đích sử dụng.
Trong lập trình, ngăn xếp cho phép bạn lưu trữ dữ liệu theo thứ tự nhập trước, xuất trước (LIFO). Điều này có nghĩa là mục cuối cùng được lưu trữ trong ngăn xếp là mục đầu tiên sẽ được xử lý.
Nhưng làm thế nào để bạn tạo một ngăn xếp trong Python? Đó là câu hỏi mà chúng tôi sẽ trả lời trong hướng dẫn này. Khi đọc xong hướng dẫn này, bạn sẽ trở thành chuyên gia tạo và làm việc với ngăn xếp bằng Python.
Ngăn xếp Python
Ngăn xếp lưu trữ dữ liệu theo thứ tự nhập sau cùng, xuất trước (LIFO).
Để giúp bạn hiểu cách thức hoạt động của thứ tự này, hãy xem xét một chồng đĩa. Khi bạn có một chồng đĩa cần làm sạch, đĩa đầu tiên bạn sẽ dọn đi là đĩa ở trên cùng. Sau đó, khi bạn di chuyển các đĩa, bạn sẽ có thể truy cập vào các đĩa ở phía dưới trong ngăn xếp.
Ngăn xếp ngược lại với hàng đợi trong Python. Hàng đợi loại bỏ mục ít được thêm gần đây nhất (vì chúng sử dụng cấu trúc nhập trước, xuất trước), trong khi ngăn xếp loại bỏ mục được thêm gần đây nhất (vì chúng sử dụng cấu trúc nhập sau cùng, xuất trước).
Ngăn xếp thường hỗ trợ hai hoạt động:đẩy và bật. Đẩy cho phép bạn thêm một mục vào đầu ngăn xếp và bật lên cho phép bạn xóa mục ở trên cùng ngăn xếp.
Trong Python, có hai cách tiếp cận chính mà bạn có thể sử dụng để tạo ngăn xếp:sử dụng danh sách dựng sẵn và sử dụng collections.deque()
lớp. Hãy phân tích cách hoạt động của từng phương pháp này.
81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia một cuộc thi đào tạo. Kết hợp với bootcamp ngay hôm nay.
Sinh viên tốt nghiệp bootcamp trung bình đã dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.
Danh sách tích hợp sẵn trong Python
Kiểu dữ liệu danh sách tích hợp sẵn cho phép bạn tạo một ngăn xếp bằng Python.
Vì danh sách Python được triển khai dưới dạng mảng, bạn có thể thêm và xóa các mục vào chúng một cách dễ dàng. Ngoài ra, thứ tự mà bạn chèn các giá trị trong danh sách sẽ được giữ nguyên, có nghĩa là bạn có thể dễ dàng loại bỏ các mục đầu tiên và cuối cùng trong danh sách.
Giả sử chúng ta muốn tạo một ngăn xếp lưu trữ danh sách các bài tập về nhà trong một lớp học. Giáo viên muốn chấm điểm các bài tập này theo thứ tự xuất hiện trong chồng (vì vậy, bài tập được giao trước sẽ ở cuối ngăn xếp và bài tập được giao cuối cùng sẽ ở trên cùng của chồng).
Thêm các mục vào ngăn xếp
Để thêm các mục vào một ngăn xếp, chúng ta có thể sử dụng append()
phương pháp. Chúng tôi có thể tạo ngăn xếp bài tập về nhà bằng cách sử dụng mã sau:
giao cho =[] giao.append ("Hannah") giao.append ("Benny") giao.append ("Gordon") in (nhiệm vụ)
Mã của chúng tôi trả về:
['Hannah', 'Benny', 'Gordon']
Trong mã của chúng tôi, trước tiên chúng tôi khai báo một danh sách có tên là assignments
. Sau đó, chúng tôi sử dụng append()
để thêm ba tên vào danh sách bài tập đã được giao của chúng tôi. Tên chúng tôi thêm vào, theo thứ tự:Hannah, Benny, Gordon. Vì Gordon đã giao nhiệm vụ cuối cùng nên nó xuất hiện ở vị trí cuối cùng trong danh sách của chúng tôi.
Xóa các mục khỏi ngăn xếp
Giả sử rằng chúng tôi đã chấm điểm bài tập của Gordon và chúng tôi muốn tìm xem bài tập nào sẽ được xếp loại tiếp theo. Điều này liên quan đến việc xóa mục ở đầu ngăn xếp của chúng tôi.
Để xóa một mục khỏi ngăn xếp của chúng tôi, chúng tôi có thể sử dụng pop()
phương pháp. Đây là mã chúng tôi có thể sử dụng để xóa mục hàng đầu trên ngăn xếp của chúng tôi:
assignments =[] Assions.append ("Hannah") Giao nhiệm vụ.append ("Benny") Giao nhiệm vụ.append ("Gordon") Giao nhiệm vụ.pop () print (Bài tập)
Mã của chúng tôi trả về:
['Hannah', 'Benny']
Tên của Gordon đã bị xóa khỏi ngăn xếp bằng cách sử dụng pop()
, và vì vậy ngăn xếp của chúng ta giờ chỉ chứa hai cái tên:Hannah và Benny.
domains.deque Class
Lớp deque trong thư viện bộ sưu tập cho phép bạn tạo hàng đợi kết thúc kép.
Đối tượng deque được triển khai dưới dạng danh sách được liên kết kép, có nghĩa là nó có hiệu suất mạnh mẽ và nhất quán khi chèn và xóa các phần tử. Ngoài ra, vì thư viện bộ sưu tập là một phần của Thư viện chuẩn Python, bạn có thể nhập nó vào mã của mình mà không cần phải tải xuống thư viện bên ngoài.
Để làm việc với collections.deque
, trước tiên chúng ta phải nhập nó vào mã của mình bằng cách sử dụng câu lệnh nhập:
từ bộ sưu tập import deque
Hãy quay lại ví dụ về bài tập về nhà của chúng ta ở phần trước để minh họa cách hoạt động của lớp collection.deque.
Thêm các mục vào Deque Stack
Để thêm các mục vào ngăn xếp deque, chúng ta có thể sử dụng append()
phương pháp. Giả sử chúng ta muốn tạo một hàng đợi với các bài tập về nhà bằng cách sử dụng lớp deque. Chúng tôi có thể làm như vậy bằng cách sử dụng mã này:
từ các bộ sưu tập import dequeassignments =deque () má công.append ("Hannah") giao nhiệm vụ.append ("Benny") giao nhiệm vụ.append ("Gordon") in (nhiệm vụ)
Mã của chúng tôi trả về:
deque (['Hannah', 'Benny', 'Gordon'])
Hãy chia nhỏ mã của chúng ta. Đầu tiên, chúng tôi nhập lớp deque từ thư viện bộ sưu tập. Sau đó, chúng tôi tạo một deque bằng cách sử dụng deque()
và gán cho biến assignments
.
Tiếp theo, chúng tôi thêm ba tên vào nhiệm vụ của chúng tôi deque:Hannah, Benny và Gordon. Cuối cùng, chúng tôi in nội dung của hàng đợi bài tập của chúng tôi ra bảng điều khiển.
Bạn có thể thấy rằng, trong ví dụ này, dữ liệu của chúng tôi được lưu trữ dưới dạng deque thay vì ngăn xếp (biểu thị bằng thực tế là kết quả của chúng tôi được bao gồm trong deque()
). Điều này là do chúng ta đang sử dụng cấu trúc deque, mặc dù dữ liệu của chúng ta vẫn hoạt động như một ngăn xếp.
Xóa các mục khỏi Deque Stack
Để xóa các mục khỏi ngăn xếp deque, bạn có thể sử dụng pop()
phương pháp.
Giả sử chúng ta vừa chấm điểm bài tập của Gordon và Benny. Để xóa chúng khỏi ngăn xếp của chúng tôi, chúng tôi có thể sử dụng mã sau:
từ các bộ sưu tập import dequeassignments =deque () má công.append ("Hannah") giao nhiệm vụ.append ("Benny") giao nhiệm vụ.append ("Gordon"). / pre>Mã của chúng tôi trả về:
deque (['Hannah'])Trong mã của chúng tôi, đầu tiên chúng tôi tạo một ngăn xếp deque với ba giá trị. Sau đó, chúng tôi thực thi
pop()
tuyên bố hai lần. Mỗi lầnpop()
câu lệnh chạy, mục ở trên cùng của ngăn xếp của chúng tôi bị xóa. Điều này có nghĩa là các giá trị Gordon và sau đó là Benny bị xóa khỏi ngăn xếp của chúng ta, để lại Hannah là mục duy nhất còn lại trong ngăn xếp của chúng ta.
Để tìm hiểu thêm về lớp deque Python, hãy đọc hướng dẫn của chúng tôi về hàng đợi và deques Python.
Kết luận
Ngăn xếp cho phép bạn lưu trữ dữ liệu theo thứ tự nhập trước, xuất trước. Có một số cách để triển khai ngăn xếp trong Python, nhưng hai cách tiếp cận thực tế nhất là sử dụng cấu trúc danh sách tích hợp sẵn trong Python hoặc sử dụng
collections.deque()
lớp.
Hướng dẫn này đã thảo luận, có tham chiếu đến các ví dụ, cách tạo ngăn xếp trong Python bằng cách sử dụng danh sách và
collections.deque()
. Bây giờ, bạn đã sẵn sàng để bắt đầu tạo các ngăn xếp của riêng mình như một nhà phát triển Python chuyên nghiệp!