この記事では、Python+NumPyを用いて、配列のスタック(LIFO)操作を実装する方法をソースコード付きで解説します。
スタック(LIFO)
キューは配列に対して以下の動作を行います。
| 順 | 説明 |
|---|---|
| ① | データの追加・・・配列の末尾に行う |
| ② | データの取り出し・・・配列の末尾から行う |
この一連の動作のことをキュー、もしくはFIFO(Last In First Out=後入れ先出し)といいます。
つまり、古いデータほど最後の方まで残ります。
今回はこれをNumPyで実装してみました。
ソースコード(Python3+NumPy)
サンプルプログラムのソースコードです。
# -*- coding: utf-8 -*-
import numpy as np
def stack(src, a):
b = src[-1]
dst = np.roll(src, 1)
dst = np.roll(dst, -1)
dst[-1] = a
return dst, b
def main():
# 1次元配列の生成
x = np.array([1, 2, 3, 4, 5])
# スタック操作
b, y = stack(x, 6)
print('y=', y) # y= [2 3 4 5 6]
if __name__ == '__main__':
main()

コメント