「リスト」の編集履歴(バックアップ)一覧に戻る
リスト - (2025/05/15 (木) 21:50:52) のソース
** 目次 #contents ** 文字列型リストを作成する 文字列を単一引用符で囲んで文字列リテラルを作り、[ ]演算子でまとめる。 #highlight(){{ >>> s1 = ['A', 'B', 'C'] >>> s2 = ['a', 'bc', 'def'] >>> print(s1) ['A', 'B', 'C'] >>> print(s2) ['a', 'bc', 'def'] >>> print(s1 + s2) ['A', 'B', 'C', 'a', 'bc', 'def'] }} ** リストの要素数を得る len関数を使う。 #highlight(){{ >>> s = ['abc', 'de', 'f'] >>> print(len(s)) 3 >>> s = [] >>> print(len(s)) 0 }} ** リストから指定の要素の値を得る [ ]演算子を使ってインデックスを指定する。取得したい要素の番号を与える。ベクトルのインデックスは0から始まる0および正数の整数であることに注意。 #highlight(){{ >>> s = ['abc', 'de', 'f'] >>> print(s[0]) abc >>> print(s[1]) de >>> print(s[2]) f }} ** 空のリストを作る リスト表記演算子 [ ] を使う。[ ] は空のリストを表す。 #highlight(){{ >>> x = [] >>> x [] }} ** 要素数を指定して空のリストを作る Noneと乗算演算子 * を組み合わせる。要素数が3ですべての要素が空のリストを作る。 #highlight(){{ >>> x = [None] * 3 >>> x [None, None, None] }} 後から値の代入が容易に行える。 #highlight(){{ >>> x[1] = 100 >>> x [None, 100, None] }} ** リストを結合する ~+演算子を使う #highlight(){{ >>> n1 = [1, 2, 3] >>> n2 = [4, 5, 6, 7] >>> n = n1 + n2 >>> print(n) [1, 2, 3, 4, 5, 6, 7] }} ** 2次元配列を作る(リストのリスト) リストの要素をリストにすることで、行列のようなものを実現することができ、いわゆる2次元配列を作ることができる。 2行3列の2次元リストを作る。 #highlight(){{ >>> x = [[1, 2, 3], [4, 5, 6]] >>> x [[1, 2, 3], [4, 5, 6]] }} 要素を取り出すには、[1つ目のインデックス][2つ目のインデックス]とする。インデックスは0から始まることに注意。 #highlight(){{ >>> x[0][0] 1 >>> x[1][2] 6 }} ** リストの要素を逆順に並び替える reverseメソッドを使う。 #highlight(){{ >>> n1 = [1, 2, 3, 5, 4] >>> s1 = ['A', 'B', 'D', 'C'] >>> print(n1) [1, 2, 3, 5, 4] >>> print(s1) ['A', 'B', 'D', 'C'] >>> n1.reverse() >>> print(n1) [4, 5, 3, 2, 1] >>> s1.reverse() >>> print(s1) ['C', 'D', 'B', 'A'] }} reservseメソッドは、指定したリスト自体の要素を並び替えることに注意。並び替えた別のリストが欲しい場合は、reversed関数を使用する。reversed関数の戻り値をlist関数に渡して、新たなリストを作成する。 #highlight(){{ >>> n2 = [1, 2, 3, 5, 4] >>> list(reversed(n2)) [4, 5, 3, 2, 1] >>> print(n2) [1, 2, 3, 5, 4] }} ** アンパックを使う シーケンスはアンパックを使用して、まとめて代入することができる。 #highlight(){{ >>> n = [1, 4, 9, 16] >>> a, b, c, d = n >>> print(a, b, c, d) 1 4 9 16 >>> s = ['A', 'BC', 'DEF'] >>> a, b, c = s >>> print(a, b, c) A BC DEF }} シーケンスの要素数と代入先の変数の数が異なる場合はエラーが発生する。 #highlight(){{ >>> n = [1, 4, 9, 16] >>> a, b = n Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: too many values to unpack (expected 2) }} ** リストに要素を追加する 既存のリストに要素を追加するには、+=演算子かappendメソッドを使う。いずれの方法も最後の要素の後にその要素が追加される。これを、任意の位置に追加したい場合は、insertメソッドを使う。第一引数に指定した数値がインデックスになるように要素が追加される。 #highlight(){{ >>> s = ['スノウブレイク'] >>> s += ['瀬戸麻沙美さん'] >>> s.append('かわいい') >>> print(s) ['スノウブレイク', '瀬戸麻沙美さん', 'かわいい'] >>> s.insert(1, 'リフ-ムゲン知眼') >>> print(s) ['スノウブレイク', 'リフ-ムゲン知眼', '瀬戸麻沙美さん', 'かわいい'] >>> len(s) 4 }} ** リストから条件に一致する要素を抽出する リスト内包表記のif節を使う。戻り値はリストで、条件に一致する要素がない場合は、空のリストを返す。以下の例のとおり、if節には式は一つしか書くことはできない。 #highlight(){{ >>> ns = [2 ** n for n in range(0, 9)] >>> print(ns) [1, 2, 4, 8, 16, 32, 64, 128, 256] >>> [n for n in ns if n > 100] [128, 256] >>> [n for n in ns if n > 1000] [] >>> len([n for n in ns if n > 100]) 2 >>> len([n for n in ns if n > 1000]) 0 >>> [s for s in ss if s == '瀬戸麻沙美'] ['瀬戸麻沙美'] >>> [s for s in ss if (s == '鈴木みのり' || s == 'のぐちゆり')] File "<stdin>", line 1 [s for s in ss if (s == '鈴木みのり' || s == 'のぐちゆり')] ^ SyntaxError: invalid syntax >>> import re >>> [s for s in ss if re.search('(鈴木みのり|のぐちゆり)', s)] ['鈴木みのり', '鈴木みのり', 'のぐちゆり'] >>> [s for s in ss if re.search('美', s)] ['瀬戸麻沙美', '和多田美咲'] }}