閉じる

ゼロからわかるPythonリスト(list)の作り方と使いどころ

Pythonで複数のデータを順番に管理したいときに使う代表的なデータ構造がリスト(list)です。

配列のように位置で要素にアクセスでき、後から中身を変えられる柔軟さが魅力です。

本記事では、リストの基本と作り方、よくある使いどころを、初めての方でも手を動かして理解できるように丁寧に解説します。

リスト(list)とは?複数データを順番に管理

リストは、値を順番に並べて管理するコンテナ型です。

文字列や数値などの基本型に加え、辞書や他のリストなども要素にできます。

順序が大切で、後から中身を更新したいときに最適です。

リストの基本(順序・変更可能・重複可)

リストの3つの性質を押さえると、使いどころが見えてきます。

順序を保持すること、変更可能(mutability)であること、同じ値を重複して持てることが重要なポイントです。

つまり、作った順番のまま取り出せる、あとから差し替えや追加・削除ができる、同じ値が複数あっても良いということです。

Python
# 順序・変更可能・重複可の例
nums = [3, 1, 3]       # 重複可(3が2つ)
print(nums)            # 順序を保持

nums[1] = 2            # 位置を指定して変更(ミュータブル)
nums.append(4)         # 末尾に追加
print(nums)
実行結果
[3, 1, 3]
[3, 2, 3, 4]

扱えるデータ型と混在の可否

リストはPythonのあらゆるオブジェクトを要素にできます。

型の混在も可能です。

ただし、処理や見通しの良さのためには、基本的に同種のデータで揃えるのがおすすめです。

Python
# 混在するデータ型の例
data = [1, "A", True, 3.14, None, {"x": 10}, [9, 8]]
for x in data:
    print(x, type(x).__name__)
実行結果
1 int
A str
True bool
3.14 float
None NoneType
{'x': 10} dict
[9, 8] list

どんな場面で使う?(使いどころの例)

順序が管理の鍵になるタスク一覧や、時系列データ、待ち行列のような用途に向いています。

「この順番で処理したい」「n番目の要素を取り出したい」といった要件がある場合に威力を発揮します。

Python
# 簡単なタスク管理の例
tasks = []                         # 空のリストで開始
tasks.append("買い物に行く")
tasks.append("メールを返信する")
tasks.append("請求書を確認する")

print("先頭のタスク:", tasks[0])   # 位置で取得
print("全タスク:")
for i, t in enumerate(tasks, start=1):
    print(i, t)
実行結果
先頭のタスク: 買い物に行く
全タスク:
1 買い物に行く
2 メールを返信する
3 請求書を確認する

リストの作り方(基本の構文)

ここでは、リストの代表的な作り方を段階的にまとめます。

最初はリテラルで作るのがシンプルです。

必要に応じてlist()range()split()などを使い分けます。

リストリテラル([…])の書き方

角かっこ[]で要素をカンマ区切りにします。

読みやすく、最もよく使われます。

Python
# リテラルでリストを作る
a = [1, 2, 3]
b = ["apple", "banana", "cherry"]
c = [1, "two", 3.0]  # 型が混在しても構いません
print(a)
print(b)
print(c)
実行結果
[1, 2, 3]
['apple', 'banana', 'cherry']
[1, 'two', 3.0]

空のリストを作る([]/list())

空のリストは[]list()のどちらでも作れます。

好みやコード規約で選びます。

Python
# 空のリストの2通りの作り方
empty1 = []
empty2 = list()
print(empty1, empty2)
実行結果
[] []

ほかの型から作る(list()で変換)

イテラブル(繰り返し可能)なオブジェクトlist()で要素ごとのリストに変換できます。

Python
# tuple → list
t = (10, 20, 30)
print(list(t))

# set → list(集合は順序を持たないため、表示順は保証されません)
s = {3, 1, 2}
print(sorted(list(s)))  # 並びを安定化したい場合はsortedで

# str → list(各文字が要素になります)
text = "ABC"
print(list(text))

# dict → list(キーのリストになります。Python 3.7+は挿入順を保持)
d = {"x": 1, "y": 2}
print(list(d))         # ['x', 'y']
print(list(d.items())) # キーと値のタプルのリスト
実行結果
[10, 20, 30]
[1, 2, 3]
['A', 'B', 'C']
['x', 'y']
[('x', 1), ('y', 2)]
注意

setは順序を持たないため、list(s)の表示順は実行環境により変わることがあります。

rangeで連番リストを作る

連番を作る定番はrange()です。

開始・終了・ステップを指定できます。

Python
# rangeで連番を作る
print(list(range(5)))        # 0から4
print(list(range(2, 10, 2))) # 2から8まで2刻み
実行結果
[0, 1, 2, 3, 4]
[2, 4, 6, 8]

文字列をsplitしてリスト化

区切り文字で分割してリストにできます。

CSV的なデータ処理の入口にもなります。

Python
# 文字列をsplitしてリスト化
s = "東京,大阪,名古屋"
cities = s.split(",")          # カンマで分割
print(cities)

line = "Alice Bob   Carol"     # 空白が連続する場合
print(line.split())            # 引数なしで連続空白をまとめて分割
実行結果
['東京', '大阪', '名古屋']
['Alice', 'Bob', 'Carol']

ネストしたリストを作る

2次元配列のように、リストの中にリストを入れることができます。

行列やグリッドデータに便利です。

Python
# 正しい2次元リストの作り方(内包表記)
rows, cols = 2, 3
grid = [[0 for _ in range(cols)] for _ in range(rows)]
grid[0][1] = 1
print(grid)
実行結果
[[0, 1, 0], [0, 0, 0]]
注意

[[0] * 3] * 2のように*で内側のリストを増やすと、同じオブジェクト参照が複製されるため、1箇所を変更すると全行が同時に変わってしまいます。

Python
# よくある落とし穴: * で増やした内側リストは同一参照になる
wrong = [[0] * 3] * 2
wrong[0][0] = 9
print("wrong:", wrong)  # 1行変更したつもりが両方変わる

# 正しい方法(各行を独立生成)
right = [[0] * 3 for _ in range(2)]
right[0][0] = 9
print("right:", right)
実行結果
wrong: [[9, 0, 0], [9, 0, 0]]
right: [[9, 0, 0], [0, 0, 0]]

リストの使いどころと選び方

リストを選ぶ基準が明確だと、他のデータ構造との使い分けが楽になります。

「順序」や「位置取り」が要件にあるか、後から変更が必要かを考えます。

順序や位置が重要なデータに最適

処理順やランキング、タイムラインのように、並び順やn番目という位置が意味を持つ場合はリストを選びます。

たとえば、results[0]が1位、results[-1]が最後といった位置参照が自然に書けます。

後から値を変えたいならリスト

リストはミュータブルなので、追加・更新・削除を繰り返す用途に強いです。

変わらない固定値の集まりであれば、tuple(タプル)を選ぶと意図が明確になり、不用意な変更も防げます。

辞書(dict)・集合(set)・タプル(tuple)との使い分け(概要)

それぞれの得意分野を把握しておくと、間違いが減ります。

キーで探したいなら辞書、重複を排除したいなら集合、固定の並びならタプルと覚えておくと便利です。

表: 代表的データ構造の比較(概要)

順序変更可重複主な用途
listありありあり順序付きの列、位置参照、可変なコレクション
dictあり(挿入順)ありキーは重複不可キーと値の対応、検索や参照が中心
setなしありなし重複排除、集合演算(和・差・積)
tupleありなしあり変更しない固定データ、関数の複数戻り値

迷ったら「順序・位置が重要か」「値を変える必要があるか」をチェックすると、リストを選ぶべきかどうか判断しやすくなります。

まとめ

本記事では、Pythonのリスト(list)の基本と作り方、使いどころを解説しました。

リストは順序を持ち、変更可能で、重複を許す柔軟なコレクションです。

リテラル[]list()range()split()で作り、必要に応じてネストも使えます。

用途としては、処理順や位置が重要なデータ、後から追加・更新・削除が発生するデータに適しています。

辞書・集合・タプルとの違いを意識して選べば、コードの意図が明確になり、保守もしやすくなります。

まずは小さな配列から手を動かし、リストの取り回しに慣れていきましょう。

この記事を書いた人
エーテリア編集部
エーテリア編集部

人気のPythonを初めて学ぶ方向けに、文法の基本から小さな自動化まで、実際に手を動かして理解できる記事を書いています。

クラウドSSLサイトシールは安心の証です。

URLをコピーしました!