Pythonでリスト型(List)のデータを使う方法をソースコード付きで解説します。
- Pythonのリスト型とは
- リストの要素にアクセス
- リストの末尾要素にアクセス
- リストの末尾に要素追加(list.append)
- リストの任意の場所に要素追加(list.insert)
- リストの要素を削除(del文、list.pop、list.remove)
- リストの要素を調べる(list.index, list.count, in演算子)
- リストのインデックスを複数取得(内包表記)
- リストから要素を順番に抽出(for文 + in演算子)
- リストから要素とインデックスを抽出(for文 + enumerate)
- リストの各要素に関数を適用(map関数)
- リストの各要素に対して処理(リスト関数 filter)
- リストの要素の順序を反転およびソート(list.reverse、list.sort)
- 関連ページ
Pythonのリスト型とは
本ページの内容は、以下動画で解説しています。
リストとは、データを一列に並べたものです。
リストに格納されたデータ1つのことを要素といいます。
また、データが格納された順番のことをインデックス(要素番号)といいます。
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] # 0番目の要素を表示 print( list[0] ) # 95 # 1番目の要素を表示 print( list[1] ) # 30 # 2番目の要素を表示 print( list[2] ) # 75
リストの末尾要素にアクセス
リストの末尾(1番最後)の要素へアクセスするにはインデックスに-1を指定します。( list[-1] )
# -*- coding: utf-8 -*- list = [95, 30, 75, 42, 56] # 1番最後の要素を表示 print( list[-1] ) # 56
ちなみに後ろから2番目を指定する場合はlist[-2]となります。
このようにインデックスを -1, -2, -3…と指定することで要素の最後からアクセスできます。
リストの末尾に要素追加(list.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]
リストの任意の場所に要素追加(list.insert)
Pythonでは、insertメソッドを使うことで、リストの任意の場所(インデックス)に要素を追加できます。
■書式
list.insert(n, x)
リストのn番目に要素xを追加します。
■サンプルコード
insertメソッドでリストの1番目に要素79を追加するサンプルコードです。
# -*- coding: utf-8 -*- list = [95, 30, 75, 42, 56] x = 79 list.insert(1, x) print(list) # [95, 79, 30, 75, 42, 56]
リストの要素を削除(del文、list.pop、list.remove)
Pythonでは、del文やpop, removeメソッドを用いることで要素を削除できます。
– | 書式 |
---|---|
1 | del list[n] |
2 | list.pop(n) |
3 | list.remove(obj) |
del文はリスト(list)からn番目の要素を削除できます。
popメソッドも同様にリスト(list)からn番目の要素を削除できます。
removeメソッドはリスト(list)から指定したオブジェクト(obj)を持つ要素を削除できます。(複数ある場合は、最初の要素のみ削除)
■サンプルコード
del, pop, removeメソッドを用いてリストの1番目にある要素「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]
リストの要素を調べる(list.index, list.count, in演算子)
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
リストのインデックスを複数取得(内包表記)
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]
リストから要素を順番に抽出(for文 + in演算子)
Python3では、for文+in演算子で、リストから要素を順番に抽出できます。
(他言語のfor each文と同様)
【書式】
for 変数名 in リスト名:
【処理内容】
①リストの要素数だけ繰り返し処理が発生
②1回繰り返しが行われる毎に、指定した変数に要素の値が代入されていきます。
(例)2回目の繰り返し処理中は、変数に2番目の要素値が入る
■ソースコード
#-*- coding:utf-8 -*- import sys # リスト宣言 array = ["沖田", "武蔵", "モードレッド"] # インデックスと要素を取り出し for e in array: print(e) """ 沖田 武蔵 モードレッド """
リストから要素とインデックスを抽出(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 , 値: モードレッド """
リストの各要素に関数を適用(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関数でリストを取り出せます。
リストの各要素に対して処理(リスト関数 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関数でリストを取り出せます。
リストの要素の順序を反転およびソート(list.reverse、list.sort)
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]