【Python】リストの使い方

この記事では、Pythonでリストを使う方法をソースコード付きで解説します。

【はじめに】リストとは

リストとは、データを一列に並べたものです。
リストに格納されたデータのことを要素といいます。
Pythonのリストは、カンマ( , )で区切ったデータ(要素)を角括弧[ ]で括ることで作成できます。
(要素の値はすべて同じ型にする必要はありません)

list1 = [95, 30, 75, 42, 56]
list2 = ["hello", "world", 1, 2, 3] 

list2のように文字列と整数型の要素を1つのリストに格納できます。
※C言語の配列ではできません(同じ型のデータしか格納できない)

【リスト】要素にアクセス

Pythonのリストでは、インデックスは0から始まります。
リストの各要素(データ)へアクセスするには角括弧[ ]でインデックスを指定します。
1~3番目の要素にアクセスするサンプルコードです。

# -*- coding: utf-8 -*-
list = [95, 30, 75, 42, 56]

# 1番目の要素を表示
print( list[0] )  # 90

# 2番目の要素を表示
print( list[1] )  # 30

# 3番目の要素を表示
print( list[2] )  # 75
関連ページ
1 【Python】リストの要素を取得

【リスト】末尾要素にアクセス

Pythonのリストでは、インデックスは0から始まります。
リストの末尾(1番最後)の要素へアクセスするにはインデックスに-1を指定します。( list[-1] )

# -*- coding: utf-8 -*-

list = [95, 30, 75, 42, 56]

# 1番最後の要素を表示
print( list[-1] )  # 56

ちなみに後ろから二番目を指定する場合はlist[-2]となります。
このようにインデックスを -1, -2, -3…と指定することで要素の最後からアクセスできます。

関連ページ
1 【Python】リストの末尾の要素値を取得

【リスト】末尾に要素追加:append

Pythonでは、appendメソッドを使うことで、リストの末尾(1番最後)に要素を追加できます。
リストの末尾に要素xを追加します。
appendメソッドでリストの末尾に要素を追加するサンプルコードです。

# -*- coding: utf-8 -*-
list = [95, 30, 75, 42, 56]

x = 79

list.append(x)

print(list) # [95, 30, 75, 42, 56, 79]
関連ページ
1 【Python】リストの末尾に要素追加(append関数)

【リスト】任意の場所に要素追加:insert

Pythonでは、メソッドを使うことで、リストの任意の場所(インデックス)に要素を追加できます。

■書式

list.insert(n, x)

リストのn+1番目に要素xを追加します。

■サンプルコード
insertメソッドでリストの2番目に要素79を追加するサンプルコードです。

# -*- coding: utf-8 -*-

list = [95, 30, 75, 42, 56]

x = 79

list.insert(1, x)

print(list) # [95, 79, 30, 75, 42, 56]
関連ページ
1 【Python】リストに要素を追加(insert)

【リスト】要素を削除

Pythonでは、del文やpop, removeメソッドを用いることで要素を削除できます。

書式
1 del list[n]
2 list.pop(n)
3 list.remove(obj)

del文はリスト(list)からn+1番目の要素を削除できます。
popメソッドも同様にリスト(list)からn+1番目の要素を削除できます。
removeメソッドはリスト(list)から指定したオブジェクト(obj)を持つ要素を削除できます。(複数ある場合は、最初の要素のみ削除)

■サンプルコード
del, pop, removeメソッドを用いてリストの2番目にある要素「30」を削除するサンプルコードです。

# -*- coding: utf-8 -*-

list = [95, 30, 75, 42, 56]
del list[1]
print( list ) # [95, 75, 42, 56]

list = [95, 30, 75, 42, 56]
list.pop(1)
print( list ) # [95, 75, 42, 56]

list = [95, 30, 75, 42, 56]
list.remove(30)
print( list ) # [95, 75, 42, 56]
関連ページ
1 【Python】リストの要素削除(del, pop, remove)

【リスト】要素を調べる

Pythonでは、index, countメソッドやin演算子を用いることで要素を調べることができます。

記法 説明
list.index(obj) 指定したオブジェクト(obj)がリスト(list)の要素に含まれいた場合に、その位置(インデックス)を取得できます 。
list.count(obj) 指定したオブジェクト(obj)がリスト(list)の要素に含まれいた場合に、その個数を取得できます 。
obj in list in演算子では、指定したオブジェクト(obj)がリスト(list)の要素に含まれているかどうかをチェックできます。(含まれていればTrue、そうでなければFalseを返します)

■サンプルコード

# -*- coding: utf-8 -*-

list = [95, 30, 75, 42, 56, 30]

print( list.index(30) )  # 1
print( list.count(30) )  # 2
print( 30 in list )  # True
関連ページ
1 【Python】リストの要素確認(index, count, in演算子)

【リスト】in演算子

in演算子は、リスト内に指定した値があるか否かを確かめる演算子です。

【書式】

検索値 in リスト名

【返り値】
検索値がリスト内にあればTrue、そうでなければFalse

※リスト以外にもタプルや辞書に対しても使うことができます

■サンプルコード

# -*- coding: utf-8 -*-

# リストの初期化
list = [1, 2, 3]

# 結果表示
print(1 in list) # True
print(4 in list) # False
関連ページ
1 【Python】in演算子の使い方

【リスト】インデックスを複数取得

Pythonでは、内包表記を用いてリスト内の同じ値をもつ要素のインデックスを取得できます。

書式

indexes = [i for i, e in enumerate(list) if e == 3]

■ソースコード

#-*- coding:utf-8 -*-

# リスト生成
data = [1,2,3,4,5,4,3,2,1]

# 値3をもつ全てのインデックス
indexes = [i for i, e in enumerate(data) if e == 3]

# 結果表示
print(indexes) # [2, 6]
関連記事
1 【Python】リストから指定した値をもつ要素インデックスを取得

【リスト】for文 + in演算子

Python3では、for文+in演算子で、リストから要素を順番に抽出できます。
(他言語のfor each文と同様)

【書式】

for 変数名 in リスト名:

【処理内容】
①リストの要素数だけ繰り返し処理が発生
②1回繰り返しが行われる毎に、指定した変数に要素の値が代入されていきます。
(例)2回目の繰り返し処理中は、変数に2番目の要素値が入る

■ソースコード

#-*- coding:utf-8 -*-
import sys

# リスト宣言
array = ["沖田", "武蔵", "モードレッド"]
    
# インデックスと要素を取り出し
for e in array:
    print(e)

"""
沖田
武蔵
モードレッド
"""
関連ページ
1 【Python】for文+inでリストから要素抽出(for-each)

【リスト】for文 + enumerate

Python3では、for文+enumerateで、リストから要素とインデックス(要素番号)を抽出できます。

書式

for 変数名1, 変数名2 in enumerate(リスト名):

※変数1に要素番号、変数2に値が代入されます。
for文はリストの要素数だけループします。

■サンプルコード

#-*- coding:utf-8 -*-
# リスト宣言
array = ["沖田", "武蔵", "モードレッド"]
 
# インデックスと要素を取り出し
for i, e in enumerate(array):
    print("要素番号:", i, ", 値:", e)

"""
要素番号: 0 , 値: 沖田
要素番号: 1 , 値: 武蔵
要素番号: 2 , 値: モードレッド
"""
関連ページ
1 【Python】for文+enumerateでリストから要素とインデックス抽出

【リスト関数】map

Python3にはリストの各要素に対して処理できる「リスト関数」があります。
そのうちの1つでありmap関数を使うことで、リストの各要素に関数を適用できます。

書式

map(関数, リスト)

■ソースコード

# 関数定義
def func(x):
        return x * 2

data = [1, 2, 3, 4, 5]

# 関数方式
map1 = map(func, data)

# lambda方式
map2 = map(lambda x: x * 2, data)

# 結果表示
print( list(map1) ) # [2, 4, 6, 8, 10]
print( list(map2) ) # [2, 4, 6, 8, 10]

※リストの各要素に値を2倍する関数を適用しています。
※map関数の返り値からlist関数でリストを取り出せます。

関連ページ
1 【Python】リスト関数mapの使い方

【リスト関数】filter

Python3にはリストの各要素に対して処理できる「リスト関数」があります。
そのうちの1つであるfilter関数を使うことで、特定の条件を満たす要素のみ取り出せます。

【書式】

filter(関数, リスト)

※リストの各要素について順番に関数を順番に適用します。
そして、trueが返された要素のみからなるリストを返します。

■サンプルコード

# 関数定義
def func(x):
    if(x%2 != 0): return True
    else: return False

data = [1, 2, 3, 4, 5]

# 関数方式
filtered = filter(func, data)

# 結果表示
print( list(filtered) ) # [1, 3, 5]

※奇数のみをリスト形式で取り出します。
※filter関数の返り値からlist関数でリストを取り出せます。

関連ページ
1 【Python】リスト関数filterの使い方

【リスト】要素の順序を反転・ソート

Pythonでは、リストオブジェクトの要素順序の反転にreverseメソッド、ソートにはsortメソッドを使います。

書式
順序反転 list.reverse()
ソート list.sort()

■サンプルコード

# -*- coding: utf-8 -*-

# リストの生成
data = [2, 1, 4, 3]

# リストの反転
data.reverse() # [3, 4, 1, 2]
print(data)

# リストのソート
data.sort()
print(data) # [1, 2, 3, 4]
関連ページ
1 【Python】リストの順序反転・ソート
関連ページ
1 【Python】リストの使い方
2 【Python入門】サンプル集
関連記事