Python: Как использовать стек в программировании

Стек в Python — это структура данных, которая работает по принципу "последний вошел — первый вышел" (Last-In-First-Out или LIFO). Она представляет собой упорядоченный набор элементов, где новые элементы добавляются только на один конец (вершину стека), а удаление происходит также с этого же конца.

Вот пример использования стека в Python:

stack = []

# Добавляем элементы в стек
stack.append(1)
stack.append(2)
stack.append(3)

# Удаляем элемент из стека (в данном случае 3)
removed_element = stack.pop()

print(removed_element)  # Выводит: 3

Детальный ответ

Что такое стек в Python?

Стек в Python — это структура данных, которая работает по принципу LIFO (Last In, First Out). Это означает, что последний элемент, добавленный в стек, будет первым, который будет удален.

Основные операции со стеком

Стек поддерживает следующие основные операции:

  • push(item): добавляет элемент на верхушку стека.
  • pop(): удаляет и возвращает элемент с верхушки стека.
  • top(): возвращает элемент с верхушки стека без удаления.
  • is_empty(): проверяет, пуст ли стек.
  • size(): возвращает количество элементов в стеке.

Пример использования стека в Python

Давайте рассмотрим примеры использования стека в Python.

Пример 1: Обратная польская запись

Одним из распространенных применений стека является вычисление математических выражений в обратной польской записи. Вот пример:


def evaluate_postfix(expression):
    stack = []
    operators = {'+': lambda x, y: x + y, '-': lambda x, y: x - y, '*': lambda x, y: x * y, '/': lambda x, y: x / y}
    
    for token in expression:
        if token.isdigit():
            stack.append(int(token))
        else:
            operand2 = stack.pop()
            operand1 = stack.pop()
            result = operators[token](operand1, operand2)
            stack.append(result)
    
    return stack.pop()

expression = ['2', '3', '+', '4', '*']
result = evaluate_postfix(expression)
print(result)  # Output: 20
    

Пример 2: Проверка сбалансированности скобок

С помощью стека можно проверить, является ли строка сбалансированной в отношении скобок. Например:


def is_balanced(expression):
    stack = []
    opening_brackets = ['(', '[', '{']
    closing_brackets = [')', ']', '}']
    
    for char in expression:
        if char in opening_brackets:
            stack.append(char)
        elif char in closing_brackets:
            if len(stack) == 0:
                return False
            last_opening_bracket = stack.pop()
            if opening_brackets.index(last_opening_bracket) != closing_brackets.index(char):
                return False
    
    return len(stack) == 0

expression = '[{()}]'
print(is_balanced(expression))  # Output: True

expression = '({[)}]'
print(is_balanced(expression))  # Output: False
    

Заключение

Стек представляет собой важную структуру данных в Python. Он позволяет эффективно управлять элементами, добавляемыми и удаляемыми в определенном порядке. В этой статье мы рассмотрели основные операции со стеком и привели примеры его использования для вычисления обратной польской записи и проверки сбалансированности скобок.

Видео по теме

#14. Стек типа LIFO (Last-In-First-Out) | Алгоритмы на Python

Стек как структура данных. Полное понимание! Динамические структуры данных #4

Структура данных Stack( LIFO). Задача "Правильная скобочная последовательность"

Похожие статьи:

🔧 Как установить GI Python: Подробная инструкция для начинающих

🔢 Как подсчитать количество цифр в числе с помощью Python?

🏡 Как нарисовать домик в Python: пошаговое руководство

Python: Как использовать стек в программировании

🔍 Как решить 5 задание ЕГЭ по информатике с помощью Python

Как посчитать сумму цифр трехзначного числа в Python? 🧮

🔍 Как перевести из восьмеричной в десятичную питон: простое руководство 🐍