Pythonで、頻繁に使われる「list」関係の操作を、ご紹介します。
- 「ど忘れしたから、さっさと知りたい」
という方を対象にしています。
本記事は、「すぐに知って、すぐ離脱」できるよう、構成しております。
下記もくじより、知りたい操作を、クリック(タップ)して下さい。
listを初期化する
空のリストで、初期化する
a = []
任意の値で、初期化する
(例:「1、2、3」を要素に持つリストの場合)
a = [1, 2, 3]
listから、要素を取出す
N番目の要素を取出す
list[n]のように(nは数値)、list要素に振られたインデックスで指定します。
※ インデックスは、0から始まります。
◆ コード例
# a = [1, 2, 3] が代入されているとする。
b = a[0] # 最初の要素を取出す。
# b = 1 となる。
最後から、N番目の要素を取出す
list[-n]のように(nは数値)、インデックスを、マイナスで指定します。
- 最後の要素は -1
- 最後から2番めのインデックスは、-2
となります。
◆ コード例
# a = [1, 2, 3] が代入されているとする。
b = a[-1] # 最後の要素を取出す。
# b = 3 となる。
連続した要素を取得する
スライスを使います。
◆ コード例:
- 2番目(インデックス:1)〜4番目(インデックス:3)を取得したい場合
# a = [1, 2, 3, 4, 5] が代入されているとする。
b = a[1:4] # インデックス 1〜3 が取得される。
# b = [2, 3, 4] となる。
指定した値の、インデックスを取得する
index(引数:指定した値)メソッドを、使用します。
◆ コード例:値「3」の場合
# a = [1, 2, 3, 3, 3, 4, 5] が代入されているとする。
b = a.index(3)
# b = 2 となる。
上記コードから分かる通り、本メソッドで取得できるインデックスは、最初に該当した要素になります。
listの要素数を取得する
リスト全体の要素数を取得する
len(引数:list)関数を使用します。
# a = [1, 2, 3, 4, 5] が代入されているとする。
b = len(a)
# b = 5 となる。
指定した値が、listに何個あるか、取得する
count(引数:指定した値)メソッドを使用します。
# a = [1, 2, 3, 3, 3, 4, 5] が代入されているとする。
b = a.count(3)
# b = 3 となる。
listに要素を追加する
listの最後に、要素を追加する
append(引数:追加したい値)メソッドを使用します。
◆ コード例:「4」を追加したい場合
# a = [1, 2, 3] が代入されているとする。
a.append(4)
# a = [1, 2, 3, 4]になる。
指定した位置に、要素を追加する。
insert(第1引数:インデックス、第2引数:追加したい値)メソッドを使用します。
◆ コード例:
- 最初から数えて、2番目の位置(インデックス:1)に
- 「5」の値を追加したい場合
# a = [1, 2, 3] が代入されているとする。
a.insert(1, 5)
# a = [1, 5, 2, 3]になる。
listから、要素を削除する
listの要素を、全消去する
clear( ) メソッドを使用します。
# a = [1, 2, 3] が代入されているとする。
a.clear()
# a = [] となる。
listから、最後の要素を削除する
pop( ) メソッドを使います。
# a = [1, 2, 3] が代入されているとする。
a.pop()
# a = [1, 2] となる。
pop( ) はリストから値を削除して、その要素を返すメソッドになります。
# a = [1, 2, 3] が代入されているとする。
b = a.pop()
# b = 3 となる。
listから、特定の位置の要素を削除する
pop(引数:インデックス)メソッドを使用します。
◆ コード例:
- リストの最初から数えて、2番目(インデックス:1)を削除したい場合
# a = [1, 2, 3] が代入されているとする。
a.pop(1) # インデックス:1 の要素を削除
# a = [1, 3] となる。
要素値を検索して、削除する
remove(引数:削除したい値)メソッドを使用します。
# a = [1, 2, 3] が代入されているとする。
a.remove(2) # 「2」の値を持つ要素が、削除される。
# a = [1, 3] となる。
このメソッドで削除されるのは、最初に該当した要素のみです。
例えば、下記コードのように、
- 同じ値を持つリストの場合(下記の場合、値「2」が該当)、
最初に該当した要素のみ(下記の場合、2番目の要素が削除され、4番目は削除されません。)削除されます。
# a = [1, 2, 3, 2] が代入されているとする。
a.remove(2) # 値 2 の要素が削除される。
# a = [1, 3, 2] となる。
指定した値が、listに含まれるか、調べる
<指定した値> in <リスト> を使用します。
# a = [1, 2, 3, 4, 5] が代入されているとする
# 3 がリストにふくまれているか、調べたい場合
result = 3 in a
# result = True となる。
list 2つを、結合する
extend(引数:list)メソッドを使用します。
# a = [1, 2, 3] が代入されているとする。
# b = [4, 5, 6] が代入されているとする。
a.extend(b)
# a = [1, 2, 3, 4, 5, 6] となる。
sortする
listを、昇順にsortする
sort( )メソッドを使用します。
# a = [1, 5, 3, 2, 4] が代入されているとする
a.sort()
# a = [1, 2, 3, 4, 5] となる。
sorted( )メソッドもあります。
この場合、sortしたリストが複製され、戻り値となります。
◆ コード例:sortedと、sortメソッドの違い
- 上段に、sortedの事例
- 下段に、sortの事例
# sortedの場合
# a = [1, 5, 3, 2, 4] が代入されているとする
b = sorted(a)
# b = [1, 2, 3, 4, 5] となる。
###################################
# sortの場合
# a = [1, 5, 3, 2, 4] が代入されているとする
b = a.sort()
# b = None となる。sortの戻り値はNoneです。
listを、降順にsortする
sort(reverse=True) メソッドを使用します。
# sortの場合
# a = [1, 5, 3, 2, 4] が代入されているとする
a.sort(reverse=True)
# a = [5, 4, 3, 2, 1] となる。
# sortedの場合
b = sorted(a, reverse=True)
numpy関係
list から、ndarrayを作る
numpy.array(引数:list)を使用します。
import numpy as np
a = [1, 2, 3]
array = np.array(a)
# print(type(array)) = <class 'numpy.ndarray'>となる。
ndarrayから、listに変換する
tolist( )メソッドを使用します。
import numpy as np
# array = np.array([1, 2, 3]) が代入されているとする
a = array.tolist()
# a = [1, 2, 3]となる
pandas関係
listから、Seriesを作る
pandas.Series(引数:list)を使用します。
import pandas as pd
# a = [1, 2, 3] が代入されているとする
s = pd.Series(a)
# print(s)をすると、以下のようになる
# 0 1
# 1 2
# 2 3
# dtype: int64
インデックスを指定する場合は、下記のように、index引数を追記します。
import pandas as pd
# a = [1, 2, 3] が代入されているとする
s = pd.Series(a, index=['a', 'b', 'c'])
# print(s)をすると、以下のようになる
# a 1
# b 2
# c 3
# dtype: int64
Seriesから、listに変換する
to_list( )メソッドを使用します。
Numpy(ndarray)は、values属性から取得できます。
import pandas as pd
# s = pd.Series([1, 2, 3], index=['a', 'b', 'c']) が代入されているとする
a = s.to_list()
# a = [1, 2, 3]となる。
array = s.values
# print(type(array)) = <class 'numpy.ndarray'>となる。
listから、DataFrameを作る
DataFrameを作る方法の中で、代表的なものを1つ、ご紹介します。
pandas.DataFrame(引数:list)を使用します。
import pandas as pd
a = [[1, 2, 3], [4, 5, 6]]
df = pd.DataFrame(a)
# print(df)をすると、以下のようになる
# 0 1 2
# 0 1 2 3
# 1 4 5 6
カラムとインデックスを指定したい場合は、columns引数と、index引数を使用します。
import pandas as pd
a = [[1, 2, 3], [4, 5, 6]]
df = pd.DataFrame(a, columns=['A', 'B', 'C'], index=['a', 'b'])
# print(df)をすると、以下のようになる
# A B C
# a 1 2 3
# b 4 5 6
DataFrame全体を、listに変換する
Numpy(ndarray)経由で、listに変換します。
- ndarrayに変換するには、to_numpy( ) メソッドを使用し、
- ndarray から、list への変換は、tolist( ) メソッドを使用します。
import pandas as pd
# df = pd.DataFrame([[1, 2, 3], [4, 5, 6]]) が代入されているとする
a = df.to_numpy().tolist()
# a = [[1, 2, 3], [4, 5, 6]] となる。