Pythonスキルの習得

【忙しい人のためのPython】listの使い方 – 頻繁に使用される操作を厳選。Numpy、Pandasとの変換も解説 –

【忙しい人のためのPython】listの使い方 - 頻繁に使用される操作を厳選。Numpy、Pandasとの変換も併せて解説 -

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]] となる。