リスト (list型オブジェクト)

リスト (list型オブジェクト)

リストの定義と基本操作

 この記事では、Python における リスト の定義、置換、削除、スライス、連結などを解説します。Python のリスト機能は柔軟性があって扱いやすく、データ分析や統計処理で頻繁に活用されます。
 リストは複数の要素(数値や文字などのデータ)にインデックス(見出し番号)を割り当てて、ひとまとまりにしたもので、Python では

 [要素0, 要素1, 要素2, 要素3, ...... ]

という形式で定義されます。インデックスは必ず 0 から始まります。1 個目の要素には 0 、10 個目の要素には 9 が割り振られます。

 Python リストとインデックス

 フルーツのリストを作って、type()関数でデータ型を調べてみましょう。

# リストLST_01-1

# フルーツのリスト
fruits = ["りんご", "みかん", "バナナ"]

# fruitsのクラスを取得
tp = type(fruits)

# fruitsのクラスをを表示
print(tp)
<class 'list'>

 データ型は list と表示されましたね。
 リストそれ自体も数値や文字列と同じように1つのデータ型として扱われます。
 listオブジェクト は [コンテナ型 - シーケンス型] に分類されます。

 次のコードでリストを表示させてみましょう。

# リストLST_01-2

# fruitsを表示
print(fruits)
['りんご', 'みかん', 'バナナ']

 

リストから要素を取り出します

 リストから特定要素を抜き出すときは、リスト名にインデックスを [ ] で括って添えて

 リスト名[要素番号]

と記述します。fruits から1つめの要素を取り出してみます。1つめの要素にはインデックス 0 が割り当てられていることに注意してください。

# リストLST_01-3

# リストの1番目の要素の取り出し
print(fruits[0])
りんご

 

リストの要素を置き換えます

 リストの要素を別の要素に置き換えることもできます。

 リスト名[インデックス] = 新しい要素

 お菓子のリストを作って、2番目の要素を置き換えてみます:

# リストLST_02

# お菓子のリスト
sweets = ["チョコレート", "チーズケーキ", "アップルパイ"]

# リストの2番目の要素"チーズケーキ"を"抹茶プリン"に置き換える
sweets[1] = "抹茶プリン"

# sweetsを表示
print(sweets)
['チョコレート', '抹茶プリン', 'アップルパイ'

 2番目の要素が '抹茶プリン' に置き換わりました。
 

リストを連結します

 算術演算子「+」を使うと、2 種類のリストを連結することができます。

# リストLST_03

# フルーツのリスト
fruits = ["りんご", "みかん", "バナナ"]

# お菓子のリスト
sweets = ["チョコレート", "チーズケーキ", "アップルパイ"]

# リストを連結
fruits_and_sweets = fruits + sweets

# 連結されたリストを表示
print(fruits_and_sweets)
['りんご', 'みかん', 'バナナ', 'チョコレート', 'チーズケーキ', 'アップルパイ']

 

リストの要素を削除します

 リストの要素を削除したいときは del文を使います。

# リストLST_04

# Pythonのパッケージのリスト
packages = ["NumPy", "SciPy", "SymPy"]

# リストの2番目の要素を削除
del packages[1]

# packagesを表示
print(packages)
['NumPy', 'SymPy']

 

スライスでリストから複数の要素を取り出します

 Python のリストにはスライスというユニークな機能が備わっています。その名の通り、玉ねぎを包丁でスライスするような感覚で連続した要素をまとめて取り出すことができます。ただ、スライスという言葉は指定した要素をリストから削除するような誤解を与えてしまうかもしれません。しかし実際には取り出した要素をコピーして新しいリストを作るだけで、元のリストの中身が変わるわけではありません。リストをスライスしたいときは、

 [最初のインデックス : 最後のインデックス + 1]

という形式で記述します。

 Python リストのスライス

# リストLST_05-1

# 猫の品種リスト
cats = ["マンチカン", "メインクーン", "アビシニアン", "ベンガル", "ヒマラヤン"]

# リストの2番目から4番目の要素を抽出
cats_2 = cats[1:4]

# cats_2を表示
print(cats_2)
['メインクーン', 'アビシニアン', 'ベンガル']

 スライスするときにコロン (:) の左右は省略することができます。右側を省略すると指定したインデックスから最後までの要素を全部取り出します。左側を省略すると最初の要素から、インデックスまでの要素を取り出します。

# リストLST_05-2

# 3番目以降のすべての要素を取り出す
cats_3 = cats[2:]

# 最初から2つめまでの要素を取り出す
cats_4 = cats[:2]

# cats_3とcats_4を表示
print(cats_3)
print(cats_4)
['メインクーン', 'アビシニアン', 'ベンガル']
['マンチカン', 'メインクーン']

 

リスト型のメソッド一覧

 リスト型で使用できるメソッドの一覧 です。

list.sort():昇順・降順に並び替え

 list.sort(key, reverse)

 sort()メソッドは要素を昇順・降順に並び替えます。
 詳しくは こちらの記事 を参照してください。
 

list.append():末尾に要素を追加

 list.append(追加する要素)

 append()メソッドはリストの末尾に要素を付け加えます。

# リストLST_06

friends = ["小春", "沙希", "友里", "真由美", "瞳"]

# 末尾に要素を追加
friends.append("早智子")
print(friends)
['小春', '沙希', '友里', '真由美', '瞳', '早智子']

 

list.insert():要素の挿入

 list.insert(i,x)

 insert()メソッドは第 1 引数で指定したインデックスに新しい要素を挿入します。

# リストLST_07

friends = ["小春", "沙希", "友里", "真由美", "瞳"]

# インデックス4の位置に要素を挿入
friends.insert(4, "早智子")
print(friends)
['小春', '沙希', '友里', '真由美', '早智子', '瞳']

 

list.index():要素のインデックスを取得

 list.index(x,start,end)

 index()メソッドは第 1 引数で指定した要素のインデックスを返します。
 第 2 引数と第 3 引数で探索範囲を指定できます。

# リストLST_08

friends = ["小春", "沙希", "友里", "真由美", "瞳"]

# 指定した要素のインデックスを取得
x = friends.index("友里")
print(x)
3

 

list.count():要素数のカウント

 list.count(要素)

 clear()メソッドは指定引数に一致する要素の数を返します。

# リストLST_09

mylist = ["c","d","a","d","a","a","b"]

# "a"と一致する要素の数を取得
x = mylist.count("a")
print(x)
3

 

list.extend():末尾にシーケンスを追加

 list.extend(追加するシーケンス)

 extend()メソッドはリストの末尾にシーケンスを追加します。

# リストLST_10

friends = ["小春", "沙希", "友里", "真由美", "瞳"]

# 末尾にシーケンスを追加
friends.extend(["次郎","遼太郎","哲也"])
print(friends)
['小春', '沙希', '友里', '真由美', '瞳', '次郎', '遼太郎', '哲也']

 

list.remove():特定要素を削除

 list.remove(削除する要素)

 remove()メソッドはリストの要素を取り除きます。

# リストLST_11

friends = ["小春", "沙希", "友里", "真由美", "瞳"]

# "友里"を取り除いたリストを取得
friends.remove("友里")
print(friends)
['小春', '沙希', '真由美', '瞳']

 

list.clear():すべての要素を削除

 list.clear()

 clear()メソッドはリストからすべての要素を削除します。

# リストLST_12
friends = ["小春", "沙希", "友里", "真由美", "瞳"]

# リストからすべての要素を取り除く
friends.clear()
print(friends)
[]

 

list.reverse():並び順を反転

 list.reverse()

 reverse()メソッドはリストの並び順を反転します。

# リストLST_13

friends = ["小春", "沙希", "友里", "真由美", "瞳"]

# 並び順を反転
friends.reverse()
print(friends)
['瞳', '真由美', '友里', '沙希', '小春']

 

list.pop():削除した要素を取得

 list.pop(インデックス)

 pop()メソッドはリストから要素を取り除いて、取り除いた要素を返します。

# リストLST_14

friends = ["小春", "沙希", "友里", "真由美", "瞳"]

# friendからインデックス2の要素を削除して、削除した要素を取得
friends.pop(2)
'友里'

 

組み込み関数を使ってリストを操作します

 Python には外部から import しなくても使える組み込み関数が用意されています。この章では組み込み関数を使って リストの合計値や最大値・最小値・長さ を求める方法を解説します。

リストの合計値

 リストの要素を合計するときは sum()関数 を使います。

# リストLST_15

# 英語の試験の点数
etest = [71, 58, 90, 83, 65]

# リストの合計値
x = sum(etest)

print(x)
367

 

リストの最大値

 max() はリストから最大要素を返します。

# リストLST_16

# 英語の試験の点数
etest = [71, 58, 90, 83, 65]

# リストの最大値
x = max(etest)

print(x)
90

 

リストの最小値

 min() はリストから最小要素を返します。

# リストLST_17

# 英語の試験の点数
etest = [71, 58, 90, 83, 65]

# リストの最小値
x = min(etest)

print(x)
58

 

リストの長さ

 len() はリストの長さ、すなわち要素の個数を返します。

# リストLST_18

# 英語の試験の点数
etest = [71, 58, 90, 83, 65]

# リストの長さ(要素の個数)
x = len(etest)

print(x)
5

 

リストの平均値

 sum() と len() を組合わせると、リストの平均値を計算することができます。

# リストLST_19

# 英語の試験の点数
etest = [71, 58, 90, 83, 65]

# 平均点を計算
mean_etest = sum(etest)/len(etest)

print(mean_etest)
73.4