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

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

 Python における リスト の定義、置換、削除、スライス、連結などを解説します。
 Python のリスト機能は柔軟性があって扱いやすく、データ分析や統計処理で頻繁に活用されます。

リストの定義と基本操作

 listクラスのオブジェクト は [コンテナ型 - シーケンス型] に分類されます。リストは複数の要素(数値や文字などのデータ)にインデックス(見出し番号)を割り当てて、ひとまとまりにしたもので、Python では

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

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

 Python リストとインデックス

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

# コードA-1

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

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

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

 データ型は list と表示されましたね。
 リストそれ自体も数値や文字列と同じように1つのデータ型として扱われます。

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

# コードA-2

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

 

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

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

 リスト名[要素番号]

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

# コードA-3

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

 

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

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

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

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

# コードB-1

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

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

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

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

リストを連結します

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

# コードC-1

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

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

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

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

 

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

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

# コードD-1

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

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

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

 

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

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

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

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

 Python リストのスライス

# コードE-1

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

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

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

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

# コードE-2

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

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

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

 

リスト型のメソッド一覧

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

sortメソッド

 list.sort(key, reverse)

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

appendメソッド

 list.append(追加する要素)

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

# append()メソッド
# 末尾に要素を追加します

friends = ["小春", "沙希", "友里", "真由美", "瞳"]
friends.append("早智子")
print(friends)
['小春', '沙希', '友里', '真由美', '瞳', '早智子']

 

insertメソッド

 list.insert(i,x)

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

# insert()メソッド
# 指定したインデックスに要素を挿入します

friends = ["小春", "沙希", "友里", "真由美", "瞳"]
friends.insert(4, "早智子")
print(friends)
['小春', '沙希', '友里', '真由美', '早智子', '瞳']

 

indexメソッド

 list.index(x,start,end)

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

# index()メソッド
# 指定した要素のインデックスを返します

friends = ["小春", "沙希", "友里", "真由美", "瞳"]
x = friends.index("友里")
print(x)
3

 

countメソッド

 list.count(要素)

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

# count()メソッド
# 引数と一致する要素の数を返します

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

x = mylist.count("a")
print(x)
3

 

extend メソッド

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

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

# extend()メソッド
# 末尾にシーケンスを追加します

friends = ["小春", "沙希", "友里", "真由美", "瞳"]
friends.extend(["次郎","遼太郎","哲也"])
print(friends)
['小春', '沙希', '友里', '真由美', '瞳', '次郎', '遼太郎', '哲也']

 

removeメソッド

 list.remove(削除する要素)

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

# remove()メソッド
# 要素(友里)を取り除きます

friends = ["小春", "沙希", "友里", "真由美", "瞳"]
friends.remove("友里")
print(friends)
['小春', '沙希', '真由美', '瞳']

 

clearメソッド

 list.clear()

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

# clear()メソッド
# リストからすべての要素を取り除きます

friends = ["小春", "沙希", "友里", "真由美", "瞳"]
friends.clear()
print(friends)
[]

 

reverseメソッド

 list.reverse()

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

# reverse()メソッド
# 並び順を反転します

friends = ["小春", "沙希", "友里", "真由美", "瞳"]
friends.reverse()
print(friends)
['瞳', '真由美', '友里', '沙希', '小春']

 

popメソッド リストから要素を取り除きます

 list.pop(インデックス)

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

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

# インデックス2を取り除きます
friends = ["小春", "沙希", "友里", "真由美", "瞳"]
friends.pop(2)
'友里'

 

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

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

リストの合計値

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

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

# リストの合計値を求めます
x = sum(etest)

print(x)
367

 

リストの最大値

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

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

# リストの最大値を求めます
x = max(etest)

print(x)
90

 

リストの最小値

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

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

# リストの最小値を求めます
x = min(etest)

print(x)
58

 

リストの長さ

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

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

# リストの長さ(要素の個数)を求めます
x = len(etest)

print(x)
5

 

リストの平均値を計算します

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

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

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

print(mean_etest)
73.4