Pythonでプログラムを書いていると、リスト(list)を使う機会がとても多いですよね。
リストとは
- 複数のデータをまとめて管理できる入れ物
- データの順番を覚えている
- 後から要素を追加したり削除したりできる
例えば、こんな風に使います:
# 果物のリスト
fruits = ['りんご', 'バナナ', 'みかん']
# 数字のリスト
numbers = [1, 2, 3, 4, 5]
# 混在もOK
mixed = ['太郎', 25, True, 3.14]
この記事では、リストを便利に使うための「メソッド」について、初心者にも分かりやすく説明します。
メソッドとは
- リストに対してできる操作のこと
- 「リスト名.メソッド名()」の形で使う
- 追加、削除、検索などができる
要素を追加する方法

append() – 末尾に1つ追加
基本の使い方
リスト名.append(追加したい要素)
実際の例
# 好きな食べ物リスト
foods = ['ラーメン', 'カレー']
foods.append('寿司')
print(foods) # ['ラーメン', 'カレー', '寿司']
# 数字も追加できる
numbers = [1, 2, 3]
numbers.append(4)
print(numbers) # [1, 2, 3, 4]
ポイント
- 必ず一番後ろに追加される
- 1つずつしか追加できない
- 最もよく使うメソッド
insert() – 好きな位置に追加
基本の使い方
リスト名.insert(位置, 追加したい要素)
実際の例
# 動物リスト
animals = ['犬', '猫', 'うさぎ']
# 1番目の位置(猫の前)に「鳥」を追加
animals.insert(1, '鳥')
print(animals) # ['犬', '鳥', '猫', 'うさぎ']
# 一番最初に追加
animals.insert(0, '魚')
print(animals) # ['魚', '犬', '鳥', '猫', 'うさぎ']
位置の数え方
インデックス: 0 1 2 3
要素: 犬 猫 うさぎ
↑ ↑ ↑ ↑
ここ ここ ここ ここに挿入可能
extend() – 複数をまとめて追加
基本の使い方
リスト名.extend(他のリストやタプル)
実際の例
# 日本の都市
japanese_cities = ['東京', '大阪']
# 海外の都市
foreign_cities = ['ニューヨーク', 'ロンドン', 'パリ']
# まとめて追加
japanese_cities.extend(foreign_cities)
print(japanese_cities)
# ['東京', '大阪', 'ニューヨーク', 'ロンドン', 'パリ']
appendとextendの違い
# append を使った場合
list1 = [1, 2]
list1.append([3, 4])
print(list1) # [1, 2, [3, 4]] - リストがそのまま追加される
# extend を使った場合
list2 = [1, 2]
list2.extend([3, 4])
print(list2) # [1, 2, 3, 4] - 要素が個別に追加される
要素を削除する方法

pop() – 指定した位置から削除
基本の使い方
削除された要素 = リスト名.pop() # 最後の要素を削除
削除された要素 = リスト名.pop(位置) # 指定位置の要素を削除
実際の例
# 買い物リスト
shopping = ['牛乳', 'パン', '卵', 'りんご']
# 最後の要素を削除(買ったのでリストから削除)
bought_item = shopping.pop()
print(f'{bought_item}を買いました') # りんごを買いました
print(shopping) # ['牛乳', 'パン', '卵']
# 2番目の要素を削除
item = shopping.pop(1)
print(f'{item}を買いました') # パンを買いました
print(shopping) # ['牛乳', '卵']
便利な使い方
# スタック(後入れ先出し)として使う
stack = []
stack.append('1番目')
stack.append('2番目')
stack.append('3番目')
print(stack.pop()) # 3番目(最後に入れたものが出る)
print(stack.pop()) # 2番目
print(stack.pop()) # 1番目
remove() – 値を指定して削除
基本の使い方
リスト名.remove(削除したい値)
実際の例
# 嫌いな食べ物を削除
foods = ['ピーマン', 'トマト', 'にんじん', 'きゅうり']
foods.remove('ピーマン')
print(foods) # ['トマト', 'にんじん', 'きゅうり']
# 数字も削除できる
numbers = [1, 2, 3, 2, 4]
numbers.remove(2) # 最初に見つかった2だけ削除される
print(numbers) # [1, 3, 2, 4]
注意点
# 存在しない要素を削除しようとするとエラー
fruits = ['りんご', 'バナナ']
try:
fruits.remove('みかん') # エラーが発生
except ValueError:
print('みかんはリストにありません')
clear() – 全部削除
基本の使い方
リスト名.clear()
実際の例
# 今日のタスクリスト
tasks = ['宿題', '買い物', '掃除']
print(f'残りタスク: {len(tasks)}個') # 3個
# 全部完了したのでクリア
tasks.clear()
print(f'残りタスク: {len(tasks)}個') # 0個
print(tasks) # []
要素を検索する方法

index() – 要素の位置を調べる
基本の使い方
位置 = リスト名.index(探したい値)
実際の例
# クラスの出席番号
students = ['田中', '佐藤', '鈴木', '高橋']
# 鈴木さんの位置を調べる
position = students.index('鈴木')
print(f'鈴木さんは{position}番目にいます') # 2番目にいます
# 実際の順番(人間の感覚)では3番目
print(f'実際の順番では{position + 1}番目です') # 3番目です
範囲を指定して検索
# 長いリストの一部だけで検索
numbers = [1, 2, 3, 2, 4, 2, 5]
# 3番目以降で「2」を探す
position = numbers.index(2, 3) # 3番目以降で検索
print(position) # 3(4番目の位置)
count() – 要素の個数を数える
基本の使い方
個数 = リスト名.count(数えたい値)
実際の例
# アンケート結果
answers = ['はい', 'いいえ', 'はい', 'はい', 'いいえ', 'はい']
# 「はい」の回答数
yes_count = answers.count('はい')
no_count = answers.count('いいえ')
print(f'はい: {yes_count}票') # はい: 4票
print(f'いいえ: {no_count}票') # いいえ: 2票
# サイコロの目の出現回数
dice_rolls = [1, 3, 6, 2, 6, 4, 6, 1, 6]
six_count = dice_rolls.count(6)
print(f'6の目が{six_count}回出ました') # 4回出ました
リストを並べ替える方法

sort() – 昇順・降順に並べ替え
基本の使い方
リスト名.sort() # 小さい順(昇順)
リスト名.sort(reverse=True) # 大きい順(降順)
数字の並べ替え
# テストの点数
scores = [85, 92, 78, 96, 73]
# 低い順に並べ替え
scores.sort()
print(scores) # [73, 78, 85, 92, 96]
# 高い順に並べ替え
scores.sort(reverse=True)
print(scores) # [96, 92, 85, 78, 73]
文字列の並べ替え
# 名前をアルファベット順に
names = ['佐藤', '田中', '鈴木', '高橋']
names.sort()
print(names) # ['佐藤', '田中', '鈴木', '高橋'](あいうえお順)
# 英語の場合
english_names = ['Bob', 'Alice', 'Charlie', 'David']
english_names.sort()
print(english_names) # ['Alice', 'Bob', 'Charlie', 'David']
カスタム並べ替え
# 文字列の長さで並べ替え
words = ['犬', 'ゴリラ', '猫', 'キリン']
words.sort(key=len) # 文字数の少ない順
print(words) # ['犬', '猫', 'ゴリラ', 'キリン']
# 学生の成績で並べ替え
students = [
{'name': '田中', 'score': 85},
{'name': '佐藤', 'score': 92},
{'name': '鈴木', 'score': 78}
]
students.sort(key=lambda x: x['score'], reverse=True) # 成績の高い順
for student in students:
print(f"{student['name']}: {student['score']}点")
reverse() – 順番を逆にする
基本の使い方
リスト名.reverse()
実際の例
# 今日の予定
schedule = ['起床', '朝食', '仕事', '昼食', '仕事', '夕食', '就寝']
# 逆順にしてみる
schedule.reverse()
print(schedule)
# ['就寝', '夕食', '仕事', '昼食', '仕事', '朝食', '起床']
# 数字も逆順にできる
numbers = [1, 2, 3, 4, 5]
numbers.reverse()
print(numbers) # [5, 4, 3, 2, 1]
リストをコピーする方法
copy() – リストの複製を作る
基本の使い方
新しいリスト = 元のリスト.copy()
実際の例
# オリジナルのリスト
original = ['りんご', 'バナナ', 'みかん']
# コピーを作成
backup = original.copy()
# オリジナルを変更
original.append('ぶどう')
print('オリジナル:', original) # ['りんご', 'バナナ', 'みかん', 'ぶどう']
print('コピー:', backup) # ['りんご', 'バナナ', 'みかん']
なぜcopy()が必要なのか
# 間違った方法
list1 = [1, 2, 3]
list2 = list1 # これはコピーではない!
list1.append(4)
print(list1) # [1, 2, 3, 4]
print(list2) # [1, 2, 3, 4] - list2も変わってしまう!
# 正しい方法
list3 = [1, 2, 3]
list4 = list3.copy() # 別々のリストとして複製
list3.append(4)
print(list3) # [1, 2, 3, 4]
print(list4) # [1, 2, 3] - list4は変わらない
実践的な使用例
買い物リストアプリ
# 買い物リストを管理するプログラム
shopping_list = []
def add_item(item):
"""商品を追加"""
shopping_list.append(item)
print(f'「{item}」を追加しました')
def remove_item(item):
"""商品を削除"""
if item in shopping_list:
shopping_list.remove(item)
print(f'「{item}」を削除しました')
else:
print(f'「{item}」はリストにありません')
def show_list():
"""リストを表示"""
if shopping_list:
print('買い物リスト:')
for i, item in enumerate(shopping_list, 1):
print(f'{i}. {item}')
else:
print('買い物リストは空です')
# 使用例
add_item('牛乳')
add_item('パン')
add_item('卵')
show_list()
remove_item('パン')
show_list()
成績管理システム
# 学生の成績を管理
class ScoreManager:
def __init__(self):
self.scores = []
def add_score(self, score):
"""成績を追加"""
self.scores.append(score)
def get_average(self):
"""平均点を計算"""
if self.scores:
return sum(self.scores) / len(self.scores)
return 0
def get_highest(self):
"""最高点を取得"""
return max(self.scores) if self.scores else 0
def get_lowest(self):
"""最低点を取得"""
return min(self.scores) if self.scores else 0
def count_above_average(self):
"""平均以上の成績の数"""
avg = self.get_average()
return len([score for score in self.scores if score >= avg])
# 使用例
manager = ScoreManager()
test_scores = [85, 92, 78, 96, 73, 88, 91]
for score in test_scores:
manager.add_score(score)
print(f'平均点: {manager.get_average():.1f}')
print(f'最高点: {manager.get_highest()}')
print(f'最低点: {manager.get_lowest()}')
print(f'平均以上: {manager.count_above_average()}人')
よくある間違いと注意点

間違い1:存在しない要素を削除しようとする
# 間違い
fruits = ['りんご', 'バナナ']
fruits.remove('みかん') # エラーが発生!
# 正しい
fruits = ['りんご', 'バナナ']
if 'みかん' in fruits:
fruits.remove('みかん')
else:
print('みかんはリストにありません')
間違い2:範囲外のインデックスを指定
# 間違い
numbers = [1, 2, 3]
numbers.insert(10, 4) # エラーにはならないが...
print(numbers) # [1, 2, 3, 4] - 末尾に追加される
# popで範囲外を指定
numbers.pop(10) # エラーが発生!
間違い3:並べ替えの勘違い
# sorted() と sort() の違い
numbers = [3, 1, 4, 2]
# sorted() は新しいリストを返す(元のリストは変わらない)
sorted_numbers = sorted(numbers)
print(numbers) # [3, 1, 4, 2] - 元のまま
print(sorted_numbers) # [1, 2, 3, 4] - 新しいリスト
# sort() は元のリストを変更する(何も返さない)
numbers.sort()
print(numbers) # [1, 2, 3, 4] - 変更された
まとめ
Pythonのリストメソッドは、データを効率的に操作するための強力なツールです。
覚えておくべき基本メソッド
操作 | メソッド | 使用例 |
---|---|---|
追加 | append() | list.append('新要素') |
挿入 | insert() | list.insert(0, '先頭に追加') |
削除 | pop() | item = list.pop() |
検索 | index() | pos = list.index('探す値') |
計数 | count() | num = list.count('数える値') |
並び替え | sort() | list.sort() |
逆順 | reverse() | list.reverse() |
コピー | copy() | new_list = list.copy() |
使い分けのコツ
- 追加:末尾なら
append()
、位置指定ならinsert()
- 削除:位置で削除なら
pop()
、値で削除ならremove()
- 検索:位置を知りたいなら
index()
、個数ならcount()
- コピー:必ず
copy()
を使って独立したリストを作る
コメント