4-1. Pythonのリスト型 (list)


1. Pythonのリスト型 (list) とは?

複数の値をひとつのまとまりで扱いたい時に、リスト型を使います。
リスト型は値を順番に格納した一覧のようなものです。


例えば、クラスの生徒20人の名前を一覧データで保持したい場合、x1, x2, ..., x20 と変数を20個作るのではなく、リスト型の1つの変数に20人分の名前を順番に格納して扱うイメージです。

Pythonリスト型_list_イメージ


リスト型を使うメリットは、データをひとまとまりに扱えること、データに順番(インデックス)があることです。


2. リストを作成する

リストは括弧 [] を使って作成します。
リストの中のデータを要素と言います。
要素を , カンマで区切って定義します。

  • リストを作成 : [<値1>, <値2>, <値3>, .... , <値n>]
x = ['鈴木', '佐藤', '斎藤', '石川']
y = [1, 3, 9]


また、何もデータを入れない空のリストを作成するもできます。

z = []


要素の型は同じではなくても問題はありません。

x = ['太田', 100, 20.8]


同じ要素をN個、持っているリストを作るときは [<値>] * <要素数> と作成します。

x = ['a'] * 5
print(x)
>> ['a', 'a', 'a', 'a', 'a']


3. リストの要素数 (リストの長さ) を数える

リストの要素数 (リストの長さ) を数えるには、 len(<リスト>) を使います。

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(len(x))
>> 10

y = []
print(len(y))
>> 0


4. リストの要素を取得する

リストの要素には、順序番号が 0 から割り当てられています。これをインデックスと言います。
このインデックス(順序番号)を指定することで、リストの要素を取得することができます。

  • 要素を取得 <リスト>[<インデックス>]

インデックスは 0 から始まっていることに注意してください。

x = [0, 11, 202, 33, 440]
print(x[0])
>> 0

print(x[4])
>> 440

インデックスを負の数(マイナス)にすると、逆順から要素を取得できます。
これをネガティブインデックスと言います。
ネガティブインデックスは -1 からスタートします。

x = [0, 11, 202, 33, 440]
print(x[-1])
>> 440

print(x[-3])
>> 202

5. リストの末尾に要素を追加する (append)

リストの末尾に要素を追加するときは append() を使います。

  • リストの末尾に要素を追加: `<リスト>.append(<追加する要素>)`
x = ['a', 'b', 'c']
x.append('d')

print(x)
>> ['a', 'b', 'c', 'd']

6. リストの要素を削除する (pop, remove)

リストの要素をインデックスで指定して削除するときは、pop() を使います。
リストの要素を値で指定して削除するときは、remove() を使います。
removeを使う際、該当する値が2つあったら、インデックスの小さい方だけ削除します。

  • リストの要素をインデックス指定で削除: <リスト>.pop(<インデックス>)
  • リストの要素を値の指定で削除: <リスト>.remove(<値>)
# インデックスを指定して削除
x = ['apple', 'banana', 'orange']
x.pop(1)

print(x)
>> ['apple', 'orange']

# 値を指定して削除
x = ['apple', 'banana', 'orange', 'apple']
x.remove('apple')

print(x)
>> ['banana', 'orange', 'apple']

7. リストに要素を挿入する (insert)

リストに要素をインデックス指定で挿入するときは、insert() を使います。

  • リストに要素をインデックス指定で挿入: <リスト>.insert(<インデックス>, <要素>)
x = ['A', 'B', 'C', 'D']
x.insert(2, 'B2')

print(x)
>> ['A', 'B', 'B2', 'C', 'D']


8. リストとリストを結合する (extend, +)

リストとリストを結合するときは、プラス +extend() を使います。

  • リストAとリストBを結合: <リストA> + <リストB>
  • リストAの末尾にリストBを結合: <リストA>.extend(<リストB>)

プラス + を使うと、結合した値が返ってくるのに対し、 extendを使うとリストA自体にリストBが結合されるという違いがあります。

# xとyを結合する
x = [0, 1, 2, 3]
y = [10, 11, 12]

new_list = x + y
print(new_list)
>> [0, 1, 2, 3, 10, 11, 12]

# xxの末尾にyyを結合する
xx = [0, 1, 2, 3, 4, 5]
yy = [100, 110, 120]

xx.extend(yy)
print(xx)
>> [0, 1, 2, 3, 4, 5, 100, 110, 120]


9. リストを分割する

リストはインデックスの範囲を指定することで、分割(スライス)することができます。

  • リストを開始インデックスから終了インデックスまで分割: <リスト>[<開始インデックス>:<終了インデックス>]

開始インデックスを省略すると、先頭のインデックスが自動で指定されます。
終了インデックスを省略すると、末尾のインデックスが自動で指定されます。

x = ['A0', 'B1', 'C2', 'D3', 'E4', 'F5', 'G6']
print(x[2:4])
>> ['C2', 'D3']

終了インデックスの要素は含まれません。
スライスの場合は、以下のように、要素の間のインデックスだと考えるとわかりやすいです。


10. リストを昇順・降順に並び替える(ソート・sort)

リストの要素を昇順・降順に並び替えるには sort() を使います。

  • リストを昇順に並び替える : <リスト>.sort()
  • リストを降順に並び帰る : <リスト>.sort(reverse=True)
x = [9, 4, 3, 5, 0, 2]

# 昇順に並び替える
x.sort()
print(x)
>> [0, 2, 3, 4, 5, 9]

# 降順に並び替える
x.sort(reverse=True)
>> print(x)
[9, 5, 4, 3, 2, 0]


11. リストに特定の要素が存在するか調べる (in)

リストに特定の要素が存在するか調べるには、in を使います。
Pythoには bool型 (論理型) があり、真なら True・偽なら False となります。

  • リストに特定の要素が存在するか調べる : <要素> in <リスト>

x = ['佐々木', '鈴木', '斎藤']

print('佐々木' in x)
>> True
print('田中' in x)
>> False


Pythonプログラミング学習の入門において、リストの操作から難易度が1つ上がります。
ここで挫折してしまう初心者は多いです。
初見で全てを理解できなくても問題ありません。まずは先に進みましょう。


12. 練習問題

練習問題 4 – a. リスト操作


13. 参考 Python 公式ドキュメント


このエントリーをはてなブックマークに追加