mei_13のPython講座 ロゴ

【解説】データの整理整頓術:Pythonにおけるリストと配列の基礎をマスターしよう




データの整理整頓術:Pythonにおけるリストと配列の基礎をマスターしよう


Yukiのアイコン
【Yuki】 あ、ひろき君。こんにちは……。今日もプログラミングの学習、頑張っているんですね。 今日は、Pythonでたくさんのデータをまとめて扱うための「リスト」や「配列」について、一緒に勉強していけたらな……と思っています。


Hirokiのアイコン
【Hiroki】 Yukiさん、こんにちは!はい、よろしくお願いします。 これまで変数については少し触れてきたんですけど、データが10個も20個も増えてくると、一つずつ変数を作るのは大変そうだなって思っていたところなんです。


Yukiのアイコン
【Yuki】 そうですね。データが増えてくると、それらを一つの「まとまり」として管理する必要が出てきます。 Pythonにはいくつかのデータのまとめ方があるのですが、まずは最も基本的でよく使われる「リスト(List)」からお話ししますね。 あ……わたし、実は文房具を集めるのが好きで……。お気に入りの万年筆やカラーペンをペンケースに順番に並べていくような、そんな感覚に近いかもしれません。

そもそも「配列」や「リスト」って何?


Hirokiのアイコン
【Hiroki】 ペンケースに並べる感覚……ですか。なんとなくイメージが湧きそうです。 でも、よく「配列」という言葉も聞くんですけど、Pythonの「リスト」とは何が違うんでしょうか?


Yukiのアイコン
【Yuki】 いい質問ですね……。厳密に言うと、他のプログラミング言語(C言語やJavaなど)での「配列」は、入れるデータの型や数が決まっていることが多いんです。 一方で、Pythonの「リスト」は、異なる種類のデータ(数値や文字列など)を混ぜて入れることができますし、後からサイズを自由に変えることもできる……とても柔軟な仕組みなんですよ。 「配列」という大きなカテゴリーの中に、Python特有の便利な「リスト」がある、と考えておけば今は大丈夫だと思います……。

Pythonのリストを作ってみよう


Hirokiのアイコン
【Hiroki】 なるほど、Pythonのリストはすごく自由度が高いんですね! 具体的にはどうやって書くんですか?


Yukiのアイコン
【Yuki】 リストを作るには、中身を [] (角括弧)で囲んで、それぞれの要素を , (カンマ)で区切ります。 例えば、好きな数字を並べる場合はこんな風に書きます……。

# リストの作成
numbers = [10, 20, 30, 40, 50]
print(numbers)

# 文字列のリスト
fruits = ["apple", "banana", "cherry"]
print(fruits)


Hirokiのアイコン
【Hiroki】 おぉ、これだけでいいんですね!これならたくさんのデータを一度に管理できそうです。 このリストの中から、特定のデータだけを取り出したいときはどうすればいいんですか?


Yukiのアイコン
【Yuki】 特定の要素を取り出すには、「インデックス(添字)」という番号を使います。 ここで注意が必要なのが、番号は「1」からではなく「0」から始まる……ということです。 わたしも時々、うっかり1番目から数えてしまって、エラーを出してしまうことがあるんですけど……。

インデックスとスライシング


Hirokiのアイコン
【Hiroki】 0から始まる……プログラミング特有の数え方ですね。 3番目のデータを取り出したいときは、インデックスは「2」になるっていうことですよね?


Yukiのアイコン
【Yuki】 その通りです、正解です……! 実際にコードで書いてみると、こんな感じになります。

fruits = ["apple", "banana", "cherry", "orange"]

# 0番目(最初)の要素を取得
print(fruits[0])  # apple

# 2番目の要素を取得
print(fruits[2])  # cherry

# マイナスの数字を使うと、後ろから数えることもできます
print(fruits[-1]) # orange(一番最後)


Hirokiのアイコン
【Hiroki】 後ろから数えることもできるんですね!それは便利そうです。 リストの一部をまとめて取り出す方法もあるんでしょうか?


Yukiのアイコン
【Yuki】 はい、「スライシング」という機能があります。 リスト名[開始位置:終了位置] と書くことで、指定した範囲を抜き出すことができるんです。 ただ、終了位置に指定したインデックスの要素は「含まれない」ので、そこだけ注意が必要かもしれません……。

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# インデックス2から5の直前まで(2, 3, 4)
print(numbers[2:5])

# 最初から4の直前まで
print(numbers[:4])

# 5から最後まで
print(numbers[5:])

リストの操作:要素の追加と削除


Hirokiのアイコン
【Hiroki】 スライスも使いこなせると、データの加工が楽になりそうですね。 リストを作った後に、新しいデータを追加したり、逆に消したりすることもできますか?


Yukiのアイコン
【Yuki】 もちろんです。リストは中身を自由に変えられるのが大きな特徴ですから……。 要素を追加するには append()、特定の場所に入れたいときは insert()、削除するには remove()pop() を使います。

stationery = ["pen", "notebook"]

# 末尾に追加
stationery.append("eraser")
print(stationery) # ['pen', 'notebook', 'eraser']

# 指定した位置(インデックス1)に挿入
stationery.insert(1, "ruler")
print(stationery) # ['pen', 'ruler', 'notebook', 'eraser']

# 値を指定して削除
stationery.remove("notebook")
print(stationery) # ['pen', 'ruler', 'eraser']

# 最後の要素を取り出して削除
last_item = stationery.pop()
print(last_item) # eraser
print(stationery) # ['pen', 'ruler']


Hirokiのアイコン
【Hiroki】 これなら、状況に合わせてリストの中身をどんどん更新していけますね。 でも、Yukiさん。一度決めたら絶対に書き換えたくないデータがある場合はどうすればいいんでしょうか?

書き換えられない「タプル」


Yukiのアイコン
【Yuki】 あ……いいところに気がつきましたね。 リストのように便利ですが、一度作ったら中身を変更できないデータ型として「タプル(Tuple)」というものがあります。 タプルは () (丸括弧)を使って作ります。

# タプルの作成
dimensions = (1920, 1080)

# 読み込みはリストと同じ
print(dimensions[0]) # 1920

# 書き換えようとするとエラーになります
# dimensions[0] = 1280  # ここでTypeErrorが発生します


Hirokiのアイコン
【Hiroki】 変更できないからこそ、誤ってデータを書き換えてしまう心配がない、というメリットがあるんですね。 設定値や、座標のようなデータを扱うのに向いてそうです。


Yukiのアイコン
【Yuki】 そうですね……。プログラムの中で「これは変えないぞ」という意思表示にもなるので、適切に使い分けると綺麗なコードになると思います。

キーで値を管理する「辞書」


Hirokiのアイコン
【Hiroki】 リストやタプルは「順番」で管理していましたけど、名前とかラベルで管理したい場合はどうすればいいですか? 例えば、ユーザー名に対して点数が紐付いているようなデータです。


Yukiのアイコン
【Yuki】 そういう時は「辞書(Dictionary)」という型を使います。 「キー(Key)」と「値(Value)」をペアにして保存する仕組みです。 現実の辞書で、単語(キー)を引いて意味(値)を調べるのと似ていますね……。

# 辞書の作成
scores = {"Hiroki": 85, "Yuki": 92, "Mei": 78}

# キーを使って値を取得
print(scores["Hiroki"]) # 85

# 新しいデータの追加や更新
scores["Taro"] = 60
scores["Yuki"] = 95 # 値の更新
print(scores)


Hirokiのアイコン
【Hiroki】 これはすごく直感的ですね!順番を覚えなくていいので、複雑なデータを扱う時に重宝しそうです。

重複を許さない「集合(セット)」


Yukiのアイコン
【Yuki】 辞書の他にも、少し特殊な「集合(Set)」というものもあります。 これは、数学の集合と同じで、同じ値が重複して入らない……という特徴があります。 順番も保持されないのですが、データの重複を取り除きたい時などにすごく便利です。

# 集合の作成
my_set = {1, 2, 2, 3, 3, 3}
print(my_set) # {1, 2, 3} ※重複が消える

# 要素の追加
my_set.add(4)


Hirokiのアイコン
【Hiroki】 へぇー!勝手に重複を消してくれるんですね。 アンケートの結果から回答者の種類を数えたい時とかに使えそうです。

本格的な数値計算には「NumPy」の配列


Yukiのアイコン
【Yuki】 さて、ここまではPython標準の機能を紹介してきましたが、実は「配列」という言葉を一番よく使う場面が他にもあります。 データサイエンスや機械学習の分野で欠かせない「NumPy(ナンパイ)」というライブラリです。


Hirokiのアイコン
【Hiroki】 NumPy……。名前は聞いたことがあります!


Yukiのアイコン
【Yuki】 Pythonの標準リストはとても柔軟なのですが、大量の数値計算をするには少し速度が遅いという欠点があるんです……。 そこで、数値計算に特化した「NumPy配列(ndarray)」が使われます。 これは、同じ型のデータしか入れられませんが、その分、計算が非常に高速で、行列計算などが簡単に行えるようになっています。

import numpy as np

# NumPy配列の作成
arr = np.array([1, 2, 3, 4, 5])

# すべての要素を一度に2倍にする(リストでは難しい操作)
print(arr * 2) # [ 2  4  6  8 10]


Hirokiのアイコン
【Hiroki】 リストだと、全部の要素を2倍にするにはループを回さないといけないですよね? arr * 2 だけで済むなんて、魔法みたいです……!


Yukiのアイコン
【Yuki】 ふふ……。そうですね。大量のデータを扱う時は、このNumPyの配列が主役になります。 ただ、今はまず標準の「リスト」をしっかり使いこなせるようになることが大切かな……と思います。

どのデータ型を選べばいいの?


Hirokiのアイコン
【Hiroki】 リスト、タプル、辞書、集合、そしてNumPyの配列……。 たくさんあって、どれを使えばいいか迷っちゃいそうです。


Yukiのアイコン
【Yuki】 最初は迷いますよね……。簡単にまとめると、こんな風に選んでみるといいかもしれません。

  1. 順番が大切で、後から中身を変えたいなら → リスト
  2. 順番が大切だけど、後から変えたくないなら → タプル
  3. 名前(キー)をセットで管理したいなら → 辞書
  4. 重複を許さず、順番も気にしないなら → 集合
  5. 大量の数値計算を高速に行いたいなら → NumPy配列


Hirokiのアイコン
【Hiroki】 すごく分かりやすいです! まずはリストをメインに使いつつ、他のものも少しずつ試していこうと思います。


Yukiのアイコン
【Yuki】 ええ、その意気です……。 コードを書いていて、データが綺麗に整理されていくのを見ると、なんだか心が落ち着きますよね。 フォントの並びが整っているWebサイトを見たときのような……そんな気持ちよさが、プログラミングのデータ構造にもある気がします。


Hirokiのアイコン
【Hiroki】 あはは、Yukiさんらしい例えですね。 僕もまずは、自分の持ち物を整理するような感覚でリストを使ってみます。


Yukiのアイコン
【Yuki】 ……はい。もし分からなくなったら、いつでも聞いてくださいね。 わたしも、ひろき君の力になれるように……もっと勉強しておきますから。 あ、参考になりそうなサイトもいくつか置いておきますね。もしお時間があれば、夜にでも眺めてみてください……。

参考資料


Hirokiのアイコン
【Hiroki】 ありがとうございます!さっそくチェックしてみます。 次は、これらのリストを「繰り返し処理」で使う方法も教えてください!


Yukiのアイコン
【Yuki】 はい、喜んで……。 繰り返し処理(for文)とリストは、切っても切れない関係ですからね。 次はもっと、プログラミングらしい動きが作れるようになりますよ。楽しみにしていてくださいね……。



「配列」のサンプルコードを見る

< 関数
コラム一覧に戻る
文字列 >

この記事では基礎を解説しましたが、実務においては「もっと複雑なデータを扱いたい」「独自のシステムに組み込みたい」といった、個別の課題に直面することも多いはずです。

「自分で書く時間は最小限に抑え、プロの品質でツールを完成させたい」という方は、ぜひ一度ご相談ください。

  • 専門家の知見に基づいた、保守性の高いコード設計
  • AIの専門家による、Gemini API等の最新AIを組み合わせた高度な自動化
  • ChatGPT等が生成したコードのデバッグ・最適化

「教わる」だけでなく「形にする」パートナーとして、フリーランスエンジニアのmei_13が最短ルートでの解決をサポートします。

➡ ココナラで制作・相談を依頼する(見積もり無料)


初心者から始められるPythonレッスン

プログラミング未経験者・初心者歓迎!
月額4,000円で質問し放題!!
● 完全オンライン
● 翌日までには必ず返信
● 挫折しない独自の学習メソッド
● 圧倒的高評価!!
テキストベースで時間を選ばない
● 高品質なサンプルコード
詳細はこちら
興味がある方はまず質問だけでもどうぞ!



AIアシスタント Yuki