リストの基礎
入門Python3 3.2
空リストの生成
list関数(正確にはシーケンス型らしい)か[]で生成できる。
ary1 = list() ary2 = [] print(ary1) print(ary2)
$ py main.py [] []
リストの生成
リストにはさまざまな要素を入れることができる。
ary1 = [1,2,3] ary2 = ['a','b','c'] ary3 = [1,'a'] # intと文字列を混在させてもOK print(ary1) print(ary2) print(ary3)
$ py main.py [1, 2, 3] ['a', 'b', 'c'] [1, 'a']
またリストをネストさせることも可能。
ary = [[1,2,3],[4,5,6],['a']]
$ py main.py [[1, 2, 3], [4, 5, 6], ['a']]
[]演算子よるリストの取り出し
ary[]で対象の要素を取り出すことができる。
ary = ['foo','bar','baz'] print(ary[0])
$ py main.py foo
また文字列と同じくスライスもできる。
ary = ['foo','bar','baz'] print(ary[1:])
$ py main.py ['bar', 'baz']
[]演算子による要素への代入
リストは文字列とは違いミュータブルなので代入が可能とのこと。
ary = ['foo','bar','baz'] print(ary) ary[0] = 'hoge' print(ary)
$ py main.py ['foo', 'bar', 'baz'] ['hoge', 'bar', 'baz']
appendによる末尾への要素の追加
ary = ['foo','bar','baz'] ary.append('hoge') print(ary)
$ py main.py ['foo', 'bar', 'baz', 'hoge']
extendによるリストのマージ
リスト同士をマージして一つのリストにする。
ary1 = ['foo','bar','baz'] ary2 = [1,2,3] ary1.extend(ary2) print(ary1)
$ py main.py ['foo', 'bar', 'baz', 1, 2, 3]
また+=でも同じことができる。
ary1 = ['foo','bar','baz'] ary2 = [1,2,3] ary1 += ary2 print(ary1)
$ py main.py ['foo', 'bar', 'baz', 1, 2, 3]
insertによる指定位置への要素の追加
指定したインデックスに対して要素を追加することができる。
例えば0を指定すれば先頭への追加となる。
ary = ['foo','bar','baz'] ary.insert(0,'hoge') print(ary)
$ py main.py ['hoge', 'foo', 'bar', 'baz']
ちなみに要素数以上の値を指定した場合は末尾への追加となる。
ary = ['foo','bar','baz'] ary.insert(len(ary),'hoge') print(ary)
$ py main.py ['foo', 'bar', 'baz', 'hoge']
ま、append使えって話ですが。
delによる要素の削除
指定したインデックスの要素を削除します。
ary = ['foo','bar','baz'] del ary[1] print(ary)
$ py main.py ['foo', 'baz']
delだけ使い方がちょっと違いますね。関数かな?と思ったんですがprint関数とは違い、カッコを付けなくても動作します。
調べてみるとdelは関数ではなく文なのでカッコは必要ないということです。
removeによる要素の削除
こちらはdelとは違い要素にマッチしたものを削除します。
ary = ['foo','bar','baz'] ary.remove('foo') print(ary)
$ py main.py ['bar', 'baz']
ただし削除されるのは最初にマッチした要素のみになります。
ary = ['foo','bar','baz','foo'] ary.remove('foo') print(ary) # 2個目のfooは削除されない
$ py main.py ['bar', 'baz', 'foo']
また存在しない要素を指定すると例外が発生します。
ary = ['foo','bar','baz'] ary.remove('hoge') print(ary)
$ py main.py Traceback (most recent call last): File "main.py", line 5, in <module> ary.remove('hoge') ValueError: list.remove(x): x not in list
popによる要素の抜き出し
指定したインデックスの要素を抜き出します。
ary = ['foo','bar','baz'] val = ary.pop(0) print(ary) print(val)
$ py main.py ['bar', 'baz'] foo
インデックスに-1を指定した場合は末尾の要素を抜き出します。
ary = ['foo','bar','baz'] val = ary.pop(-1) print(ary) print(val)
$ py main.py ['foo', 'bar'] baz
ちなみに引数なしでpopを呼ぶと末尾の要素を抜き出します。-1を指定したのと同じ挙動になるというわけですね。
inによる要素の存在チェック
ある要素がリストに存在しているかどうかチェックすることができます。
ary = ['foo','bar','baz'] result = 'foo' in ary # 存在する print(result) result = 'hoge' in ary # 存在しない print(result)
$ py main.py True False
ソート処理
sortを使うことでそのリストの要素をソートします。
ary = [4,6,2] ary.sort() print(ary)
$ py main.py [2, 4, 6]
また元のリストに影響を与えずにソートしたい場合はsorted関数を使います。
ary = [4,6,2] sorted_ary = sorted(ary) print(ary) # 元のリストは変わらず print(sorted_ary)
$ py main.py [4, 6, 2] [2, 4, 6]