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 = np.sort(X) |
降順は Y=np.sort(X)[::-1]
|
部分配列 |
Y = X[n:m] |
Xのn番目からm-1番目までの要素を抜き出したリストを Yとする |