Pythonリストメソッド完全ガイド|初心者でもすぐに使える!

python

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() を使って独立したリストを作る

コメント

タイトルとURLをコピーしました