Pythonのリスト(配列)について

リストの作成

空リストの作成は"[]"になります。

a = []

初期要素があるリストは、初期要素をカンマ区切りで"[" と"]"で囲んで作成します。 例えば、整数1、7、4、2の4個のリストは以下のようになります。

a = [1, 7, 4, 2]

文字列と整数の、"first", "second", 333 のリストを定義する場合も同じようにできます。

a = ['first', 'second', 333]

range

整数の1から10までが入ったような単調増加の数列が入ったリストは、rangeで作成できます。

変数 = range(start, stop, step)
リストの要素の最大値はstop未満になり、作成される要素の個数がNとすると以下のようになります。
stop > 最大値 = start + step x (N - 1)

0から9までの整数が入ったリストをrangeで作成する場合、以下のようになります。 増加数が1の場合は、省略できます。

a = range(0, 10, 1)
b = range(0, 10)

[5, 10, 15]のリストをrangeで作成する場合、以下のようになります。

a = range(5, 20, 5)    #>= [5, 10, 15]
stopは、リストの最大値15にstepを追加した20(stepの倍数)が一般的に指定されます。

参考 stopに16以上20以下の整数16、17, 18, 19を指定しても同じ結果になりました。 処理系によらず、以下が正しく動作するかは不明です。

a = range(5, 16, 5)    #>= [5, 10, 15]

サイズ取得(組み込み関数len)

リストのサイズ(要素数)を取得する場合、組み込み関数のlenを使います。

size = len([8, 1, 7, 8, 8])  #=> 5
print('size:', size)

結合(マージ)

リストとリストを結合(マージ)する場合、+演算子か、extendメソッドを使います。 +演算子だと結合結果を別の変数にすることができ、その場合、結合元の2つのリストを変更しません。

a = [1,2,3,4]
b = [5,6,7,8]

c = a + b   #=> [1,2,3,4,5,6,7,8]

extendメソッドは、あるリストに他のリストを結合することになります。

a = [1,2,3,4]
b = [5,6,7,8]

a.extend(b)   #=> [1,2,3,4,5,6,7,8]
同じことを+演算子ですると、以下のようになります。
a = [1,2,3,4]
b = [5,6,7,8]

a += b   #=> [1,2,3,4,5,6,7,8]

追加

末尾に追加(append)

リストの末尾に要素を追加する場合、appendメソッドを使います。

a = []
a.append(追加要素)

'aaa', 'bbb'のリストを作成して、'ccc'を追加する場合

words = ['aaa', 'bbb']
words.append('ccc')    #=> ['aaa', 'bbb', 'ccc']

指定位置に追加(insert)

リストの指定位置に要素を追加する場合、insertメソッドを使います。 位置は、0が先頭になり、2個目の位置が1となります。 マイナス値の場合は、末尾からの位置になり、-1が末尾の1個前(末尾から2番目)になります。

a = []
a.insert(位置, 追加要素)

リストの先頭に追加する場合は、位置に0を指定します。

words = ['aaa', 'bbb']
words.insert(0, 'ccc')    #=> ['ccc', 'aaa', 'bbb'] 

リストの先頭から3番目に追加する場合

words = ['ccc', 'aaa', 'bbb']
words.insert(2, 'ddd')    #=> ['ccc', 'aaa', 'ddd', 'bbb'] 

リストの末尾から2個目に追加する場合

words = ['ccc', 'aaa', 'bbb']
words.insert(-1, 'ddd')    #=> ['ccc', 'aaa', 'ddd', 'bbb'] 

削除

指定値を削除(remove)

指定値を削除したい場合、removeメソッドを使います。

a = []
a.remove(値)

a = ['aaa', 'bbb', 'ccc', 'ddd']
a.remove('bbb')   #=> ['aaa', 'ccc', 'ddd']

指定した値が複数ある場合は、先頭に近いものから削除されます。

a = [4, 1, 8, 3, 8, 8]
a.append('ccc')    #=> [4, 1, 3, 8, 8]

指定位置を削除(pop)

リストの指定位置の要素を削除する場合、popメソッドを使います。 位置は、0が先頭になり、2個目の位置が1となります。 マイナス値の場合は、末尾からの位置になり、-1が末尾の1個前(末尾から2番目)になります。

変数.pop(位置)

先頭を削除する場合は、位置に0を指定します。

a = ['aaa', 'bbb', 'ccc', 'ddd']
b = a.pop(0)
print('a:', a)
print('b:', b)
実行結果は、以下のようになります。
a: ['bbb', 'ccc', 'ddd']
b: aaa

先頭から3番目を削除する場合は、位置に2を指定します。

a = ['aaa', 'bbb', 'ccc', 'ddd']
b = a.pop(2)
print('a:', a)
print('b:', b)
実行結果は、以下のようになります。
a: ['aaa', 'bbb', 'ddd']
b: ccc

末尾を削除する場合は、位置に-1を指定します。

a = ['aaa', 'bbb', 'ccc', 'ddd']
b = a.pop(-1)
print('a:', a)
print('b:', b)
実行結果は、以下のようになります。
a: ['aaa', 'bbb', 'ccc']
b: ddd

末尾から3番目を削除する場合は、位置に-3を指定します。

a = ['aaa', 'bbb', 'ccc', 'ddd']
b = a.pop(-3)
print('a:', a)
print('b:', b)
実行結果は、以下のようになります。
a: ['aaa', 'ccc', 'ddd']
b: bbb

要素の合計(組み込み関数sum)

リストの各要素を足した合計値を返します

print(sum([8, 1, 7, 8, 8]))   #=> 32
print(sum([8, 1, -7, -8, -8]))   #=>  -14
print(sum([8, 1.2, 7, 8, 6.3]))  #=> 30.5

指定要素

指定要素の数を取得(count)

指定要素の数を取得する場合、countメソッドを使用します。

print([8, 1, 7, 8, 8].count(8))  #=> 3  (8は3個存在)
print([8, 1, 7, 8, 8].count(2))  #=> 0  (2は0個)

指定要素の位置を取得(index)

指定要素がリスト中に存在する場合、その位置(0から始まる整数)を返します。

print([4, 3, 7, 8, 11, 2].index(4))     #=> 0  (4は0番目にある)
print([4, 3, 7, 8, 3, 2].index(3, 2))   #=> 4  (2番目の7からリストの最後までを調べると 4番目
				
もし、存在しない要素を指定すると、エラーになります。
print([4, 3, 7, 8, 11, 2].index(20)) 
Traceback (most recent call last):
  File "list.py", line 22, in <module>
    print([4, 3, 7, 8, 11, 2].index(20))
ValueError: 20 is not in list

指定要素の存在を確認(in)

指定要素が存在するかどうかを調べる場合、in演算子を使用します。 指定要素 in リスト

c = range(5, 21, 5)         #=> [5, 10, 15, 20]
print(7 in c)     #=> False
print(5 in c)     #=> True