こんにちは、かつコーチです。
Pythonで複数のデータをまとめて扱いたいとき、最初に覚えるのがリストです。
リストとは、複数の値を順番に並べて格納できるデータ構造のことです。
この記事では、リストの作成方法から要素の追加・削除、そして初心者がつまずきやすいスライス記法まで、順を追って解説します。
私自身、学び始めのころはappendとinsertの違いや、スライスの範囲指定でよく混乱していました。
その体験も交えながら、実際に手を動かして理解できる内容にしています。
基本の書き方:リストの作成と操作
リストを作成する
リストは[](角かっこ)を使って作成します。
fruits = ["りんご", "みかん", "ぶどう"]
print(fruits)
# ['りんご', 'みかん', 'ぶどう']
数値・文字列・真偽値など、異なる型を混在させることも可能です。
mixed = [1, "python", True, 3.14]
print(mixed)
# [1, 'python', True, 3.14]
要素数はlen()関数で確認できます。
print(len(fruits))
# 3
要素の追加:append・insert
リストの末尾に要素を追加するにはappend()を使います。
fruits.append("メロン")
print(fruits)
# ['りんご', 'みかん', 'ぶどう', 'メロン']
特定の位置に要素を挿入したい場合はinsert()を使います。
fruits.insert(1, "バナナ")
print(fruits)
# ['りんご', 'バナナ', 'みかん', 'ぶどう', 'メロン']
insert(1, "バナナ")は、インデックス1の位置に「バナナ」を割り込ませる、という意味です。
要素の削除:remove・pop
値を指定して削除するにはremove()を使います。
fruits.remove("みかん")
print(fruits)
# ['りんご', 'バナナ', 'ぶどう', 'メロン']
インデックス(位置番号)を指定して削除しつつ、その値を取得したい場合はpop()が便利です。
last_item = fruits.pop()
print(last_item)
# メロン
print(fruits)
# ['りんご', 'バナナ', 'ぶどう']
pop()は引数を省略すると最後の要素を取り出し、pop(0)のように書けば指定した位置の要素を取り出せます。
つまずきやすい設定・注意点
remove()は、指定した値がリストに存在しないとエラーになります。
fruits.remove("パイナップル")
ValueError: list.remove(x): x not in list
このエラーを防ぐには、事前にin演算子で存在確認をしておくと安全です。
if "パイナップル" in fruits:
fruits.remove("パイナップル")
else:
print("パイナップルはリストにありません")
よくあるつまずきポイント・エラー対処
スライス記法でインデックスの範囲を間違える
リストの一部を取り出すスライスは、リスト[開始:終了]という書き方をします。
私が最初につまずいたのが、この「終了」の位置の指定でした。
❌ Before:終了インデックスを「含まれる位置」と勘違いする
numbers = [10, 20, 30, 40, 50]
result = numbers[1:3]
print(result)
私は当初、numbers[1:3]と書けば「インデックス1から3までの3つが取れる」と思い込んでいました。
しかし実際の出力はこうなります。
[20, 30]
期待していた[20, 30, 40]とは異なり、2つしか取れずに戸惑った経験があります。
✅ After:終了インデックスは「含まない位置」だと理解して書く
Pythonのスライスは、終了インデックスの要素は含まれません。
numbers[1:3]は「インデックス1から2まで(3の手前まで)」を意味します。
numbers = [10, 20, 30, 40, 50]
result = numbers[1:4]
print(result)
# [20, 30, 40]
この仕様を覚えてからは、「取得したい個数 = 終了インデックス − 開始インデックス」という考え方で書けるようになり、迷わなくなりました。
負のインデックスを使うと、末尾からの指定も可能です。
print(numbers[-2:])
# [40, 50]
まとめ
この記事のポイント
- リストは
[]で作成し、異なる型の値も混在できる - 末尾への追加は
append()、位置指定はinsert() - 値指定の削除は
remove()、位置指定&取り出しはpop() remove()は値が存在しないとValueErrorになるため、事前チェックが安全- スライスの終了インデックスは「含まれない」ことを覚えておく
次に読むべき記事
リストの基本を押さえたら、次はイミュータブル(変更不可)なデータ構造である「タプル」との違いを理解しておきましょう。
→ 次の記事:タプルの基本とリストとの違い
タグ: Python, 初心者向け, 基本文法
