クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

スタックとキューを選ぶ

このレッスンのあとで: 仕事に合わせて、スタックかキューを選ぶことができる。

40分のレッスンコマンドなし

「元に戻す」と印刷の順番

見積書を作っていて、入力をまちがえました。「元に戻す」を押すと、直前の操作が消えます。

一方、事務所の複合機では、先に送った書類から印刷されます。

どちらも「順番に並べて、一つずつ出す」仕組みです。でも、出す順番が逆です。このちがいが、今日のテーマです。

このレッスンのゴール

メモ

仕事に合わせて、スタックかキューを選ぶことができる。

キーワード

ことばいみれい
スタック最後に入れたものから出す並びです。
キュー最初に入れたものから出す並びです。
後入れ先出しスタックの出し方です。英語の略で LIFO と書きます。
先入れ先出しキューの出し方です。英語の略で FIFO と書きます。
deque両端から速く出し入れできる、Pythonの入れ物です。jobs.popleft()

学生が入力するセルは、このプレビューでは空白です。

スタックは最後のものから出す

スタックは、皿を積み重ねるイメージです。新しい皿は上に置き、取るときも上から取ります。

Pythonでは、リストの append で積み、pop() で上から取り出します。

「元に戻す」機能や、ブラウザの「戻る」ボタンがスタックの例です。

やってみよう: 元に戻す

コード: python
# 見積書の編集ソフトです。操作を一つずつ記録して、「元に戻す」に使います。
history = []

history.append("単価を1,200円に変更")
history.append("数量を30個に変更")
history.append("値引き5%を追加")
print("記録:", history)

# 元に戻す: いちばん新しい操作から取り消します。
undo = history.pop()
print("取り消した操作:", undo)
print("残りの記録:", history)

# もう一度 pop() して、次に取り消される操作を確かめましょう。

キューは最初のものから出す

キューは、窓口で番号札を取って待つ列と同じです。先に来た人から呼ばれます。

Pythonでは deque を使い、append で後ろに並べ、popleft() で先頭から出します。

印刷待ちや、問い合わせチケットの処理がキューの例です。

やってみよう: 印刷待ち

コード: python
from collections import deque

# 市役所の事務所の複合機です。印刷は、届いた順に処理します。
jobs = deque()
jobs.append("住民票の写し")
jobs.append("会議資料")
jobs.append("請求書の控え")
print("待っている印刷:", list(jobs))

# いちばん先に届いたものから印刷します。
first = jobs.popleft()
print("印刷中:", first)
print("まだ待っている:", list(jobs))

# "広報誌の原稿" を append してから、もう一度実行しましょう。

例: 同じ三つを入れて出す

入れた順スタックから出る順キューから出る順
1. 住民票の写し1. 請求書の控え1. 住民票の写し
2. 会議資料2. 会議資料2. 会議資料
3. 請求書の控え3. 住民票の写し3. 請求書の控え

学生が入力するセルは、このプレビューでは空白です。

よくある間違い

注意

「リストの pop() は先頭を取り出す」と思う人がいます。pop() は、最後の要素を取り出します。キューのように先頭から出したいときは、deque の popleft() を使います。

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。