#図のように、s=(a1,a2,…an-1,an) を積み上げます。スタックに最後にプッシュされたものは an であり、スタックからポップされた最初のものも an です。したがって、スタックは LIFO 原則に準拠します。
LIFO、つまり、後入れ先出しの並べ替え原則です。コレクション内の時間の長さに基づいて並べ替えられます。新しいアイテムは上部近くにあり、古いアイテムは下部近くにあります。スタックの一番下にあるアイテムは最も長く保管されるため、スタックの一番下は重要です。最近追加されたアイテムが最初に削除されます。
スタックが重要な理由は、アイテムの順序を逆転できるからです。挿入と削除は逆の順序で行われます。
最も典型的な例は、すべての Web ブラウザに戻るボタンがあることです。 Web を閲覧すると、Web ページがスタック (実際には Web ページの URL) に配置されます。現在閲覧しているページが上部にあり、最初に閲覧していたページが下部にあります。 「戻る」ボタンを押すと、前のページを逆の順序で閲覧します。
# 创建一个空的新栈。 它不需要参数,并返回一个空栈。
class Stack:
def __init__(self):
self.items = []
# 测试栈是否为空。不需要参数,并返回布尔值。
def isEmpty(self):
return self.items == []
# 将一个新项添加到栈的顶部。它需要 item 做参数并不返回任何内容。
def push(self, item):
self.items.append(item)
# 从栈中删除顶部项。它不需要参数并返回 item 。栈被修改。
def pop(self):
return self.items.pop()
# 从栈返回顶部项,但不会删除它。不需要参数。 不修改栈。
def peek(self):
return self.items[len(self.items)-1]
# 返回栈中的 item 数量。不需要参数,并返回一个整数。
def size(self):
return len(self.items)
スタックはわかっています。基本的な操作を練習するための小さなプロジェクト。 10 進数を任意の基数に変換します。実際、最大の数値は 16 進数です (これ以上の基数はありますか?)。
def baseConverter(n, base): # n是输入的十进制数字,base为要转化的进制数 digits = '0123456789ABCDEF' #创建一个新栈 s= Stack() # 将每次计算所得的余数添加进栈 while n> 0: rem = n % base s.push(rem) n = n // base # 将余数倒序排列至新字符串 newString = '' while not remstack.isEmpty(): newString = newString + digits[remstack.pop()] return newString
関連する推奨事項:「
Python チュートリアル」
以上がPythonのスタックとは何を指すのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。