Pythonプログラミング(ステップ7・リスト・基本機能)

このページでは、Pythonのリストを操作するための基本的な機能をまとめておく。(ここは作成中)

リストの基本

Pythonのリストは、順序付けられたデータ集まりであって、要素(項目)の変更が可能なオブジェクトである。

リストは[ ]で表現し、[1,1,2,3,5]のように記述する。空のリストは[ ]

各要素は、先頭から「何番目」で管理し、先頭は0番目である。リスト $X$ の $i$ 番目の要素はX[i]と表記する。

添字の番号に負数を書くと、要素数-その数の意味になる。例えば X[-1]は、Xの最後の要素。

Python 3の基本機能

以下では、大文字の変数名(X, Y等)はリストを表す。

その他の用法、用例については、ネット上の情報や書籍を参照のこと。

操作 書き方のパターン コメント
要素の数
n = len(X)
要素の最大値・最小値
max_val = max(X)
min_val = min(X)
特定の値を持った要素の総数
n = X.count(a)
値がaを持つ要素の数
特定の値を持った要素の添字
i = X.index(a)
値がaの要素がリストの何番目にあるか
リストの先頭から始めて最初に見つかった位置
見つからない場合はエラー(例外)となる
要素の総和
s = sum(X)
要素の二乗の総和
sqr = sum( map(lambda x:x**2, X) )
末尾に要素を追加する
X.append(a)
Xの末尾に要素aを追加する
要素を削除する
v = X.pop(i)
Xからi番目の要素を削除する
削除した要素の値が返される
末尾にリストを追加する
X.extend(Y)
Xの末尾にYを連結し、Xとする
Z=X+Yと書くと、XとYを連結したリストを
新しく生成し、Zとする
要素を逆順にする
X.reverse()
Y=X[::-1]で逆順のリストを生成
要素を整列する
X.sort()
降順は s.sort(reverse=True)
整列したリストを別に生成するには Y=sorted(X)
リストの部分からなるリスト
Y = X[n:m]
Xのn番目からm-1番目までの要素を抜き出したリストを
Yとする

NumPyの機能(ごく一部)

リスト(配列)を効率的に処理するための仕掛けとしてNumPy(ナン・パイ)モジュールが広く使われている。 NumPyを使う際は、コードの宣言部に

import numpy as np

と書いておくことで、np.何々でNumPyの機能が使えるようになる。

以下ではLで始まる大文字の変数はPythonのリスト、それ以外の大文字の変数はNumPyの配列と仮定する。 また、簡単のため、一次元配列の場合のみを想定する。

操作 書き方のパターン コメント
リストをNumPyオブジェクトに変換
X = np.array(LX)
要素が0の配列を生成
X = np.zeros(shape=(n,))
1次元(n要素)の配列(n行m列で深さl)
要素が全て1の配列は np.zeros(shape=(n,))
要素が「空」の配列は np.empty(shape=(n,))
要素の数
n = X.shape[0]
要素の最大値・最小値
max_val = np.max(X)
min_val = np.min(X)
最大・最小値を持つ要素の添字
i_max = np.argmax(X)
i_min = np.argmin(X)
特定の値を持った要素の総数
n = np.count_nonzero(X==a)
値がaを持つ要素の数
条件式の部分を X >= a, X != aのように
変えると、特定の条件にマッチした要素をカウントできる
特定の値を持った要素の添字
Y = np.where(X==a)
条件にマッチする全てのインデックスが
NumPyの配列として返される
要素の総和
s = np.sum(X)
要素の二乗の総和
sqr = np.sum(X**2)
末尾に要素を追加する
Y = np.append(X,a)
Xの末尾に要素aを追加する
要素を削除する
Y = np.delete(X,i)
Xからi番目の要素を削除した
新しい配列を生成する
末尾に配列を追加する
Z = np.append(X,Y)
Xの末尾にYを連結した配列を生成し、Zとする
要素を逆順にする
Y = np.flip(X)
Y=X[::-1] も可能
要素を整列する
Y = np.sort(X)
降順は Y=np.sort(X)[::-1]
部分配列
Y = X[n:m]
Xのn番目からm-1番目までの要素を抜き出したリストを
Yとする