「Python」リストとタプルについて解説

python

Pythonのリストとタプルは、複数の値をまとめて扱うための箱のようなものです。ただし、それぞれ特性が異なるため、適切に使い分けることが重要です。


1. リストとは?(りんごの箱のようなもの)

リスト(list)は、自由に中身を入れ替えられる箱のようなものです。りんごの箱に、好きな果物をどんどん追加したり、不要なものを取り出したりできるイメージです。

リストの作成

my_list = ["りんご", "バナナ", "みかん"]
print(my_list)  # ['りんご', 'バナナ', 'みかん']

要素の追加(果物を増やす)

my_list.append("ぶどう")  # 末尾に追加
print(my_list)  # ['りんご', 'バナナ', 'みかん', 'ぶどう']

要素の削除(不要な果物を取り除く)

my_list.remove("バナナ")
print(my_list)  # ['りんご', 'みかん', 'ぶどう']

スライス(箱の中の一部を取り出す)

print(my_list[:2])  # ['りんご', 'みかん']

2. タプルとは?(封がされた段ボール箱のようなもの)

タプル(tuple)は、リストと違って一度詰めたら中身を変えられないデータ構造です。段ボール箱に「みかん、りんご、ぶどう」を詰めてしまったら、途中で果物を追加したり取り除いたりできないイメージです。

タプルの作成(封がされた箱)

my_tuple = ("みかん", "りんご", "ぶどう")
print(my_tuple)  # ('みかん', 'りんご', 'ぶどう')

タプルのメリット

  • 中身が変わらないので安全
  • 辞書のキーとして利用できる(リストはキーにできない)
  • リストより処理が速い

3. リストとタプルの使い分け

リスト(箱)タプル(封された箱)
変更可否変更可能(果物を出し入れできる)変更不可(箱の中身はそのまま)
要素の追加・削除可能不可
処理速度遅め速め
使用例可変データの管理不変データ、辞書のキー

まとめ

  • リストは変更可能で、データの追加・削除ができる(普通の箱)
  • タプルは変更不可で、安全なデータ管理ができる(封がされた箱)
  • スライスやループを活用してリストを効率的に扱う
  • タプルは関数の戻り値や辞書のキーとして便利
  • ショッピングカートのようなシステムでは、リストとタプルを組み合わせると効果的

『実践』ショッピングカートシステムの作成

Python を使って簡単なショッピングカートシステムを作成します。このシステムでは、商品をカートに追加し、合計金額を計算し、最終的にカートの内容を表示する流れを実装します。

前提知識ークラスについて

Pythonのクラスについて簡単に説明すると、「同じ種類のデータや動作をまとめるための設計図」のようなものです。

例えば、りんごやバナナなどの「果物」を考えてみてください。
すべての果物には「名前」「色」「価格」などの共通する特徴(データ)があります。
また、「食べる」「切る」などの動作(関数)もありますよね。

クラスを使うと、このような共通する特徴や動作をひとまとめにして「果物の設計図」を作ることができます。
そして、この設計図を元に、具体的なりんごやバナナのデータを作ることができます。

Python でのクラスの例

pythonコピーする編集するclass Fruit:
    def __init__(self, name, color, price):
        """果物の情報を設定する"""
        self.name = name  # 名前
        self.color = color  # 色
        self.price = price  # 価格
    
    def show_info(self):
        """果物の情報を表示する"""
        print(f"果物の名前: {self.name}, 色: {self.color}, 価格: {self.price}円")

# クラスを使ってりんごのデータを作る
apple = Fruit("りんご", "赤", 150)

# りんごの情報を表示
apple.show_info()

実行結果

makefileコピーする編集する果物の名前: りんご, 色: 赤, 価格: 150円

このように、クラスを使うことで「同じ種類のデータ」を簡単にまとめて管理できるようになります。
ショッピングカートのシステムでは、この考え方を使って、商品の管理をスムーズにできるようにしました。

1. ショッピングカートの設計

ショッピングカートを作成するために、次のような機能が必要になります。

  • 商品を追加する
  • 商品を削除する
  • カートの中身を表示する
  • 合計金額を計算する

2. ショッピングカートのクラスを作成

まずは、ショッピングカートを管理するクラス ShoppingCart を作成します。

class ShoppingCart:
    def __init__(self):
        """カートを初期化する"""
        self.items = {}  # 商品名をキーにし、数量と価格を辞書で管理
    
    def add_item(self, name, price, quantity=1):
        """カートに商品を追加する"""
        if name in self.items:
            self.items[name]['quantity'] += quantity
        else:
            self.items[name] = {'price': price, 'quantity': quantity}
    
    def remove_item(self, name, quantity=1):
        """カートから商品を削除する"""
        if name in self.items:
            if self.items[name]['quantity'] > quantity:
                self.items[name]['quantity'] -= quantity
            else:
                del self.items[name]  # 数量がゼロになったら削除
    
    def total_price(self):
        """カートの合計金額を計算する"""
        return sum(item['price'] * item['quantity'] for item in self.items.values())
    
    def show_cart(self):
        """カートの中身を表示する"""
        if not self.items:
            print("カートは空です。")
        else:
            for name, details in self.items.items():
                print(f"{name}: {details['quantity']}個, 単価: {details['price']}円")
            print(f"合計金額: {self.total_price()}円")

3. クラスの動作確認

では、このクラスを使って実際にショッピングカートを動かしてみましょう。

cart = ShoppingCart()
cart.add_item("りんご", 150, 2)  # りんごを2個追加
cart.add_item("バナナ", 100, 3)  # バナナを3個追加
cart.show_cart()  # カートの内容を表示

cart.remove_item("バナナ", 1)  # バナナを1個削除
cart.show_cart()  # カートの内容を再表示

print(f"最終的な合計金額: {cart.total_price()}円")

4. コードの解説

  1. __init__ メソッド:
    • カートを空の辞書 (self.items) で初期化。
    • 商品名をキーとし、価格と数量を辞書で管理。
  2. add_item メソッド:
    • 商品がすでにカートにある場合は、数量を増やす。
    • ない場合は、新しく辞書に追加。
  3. remove_item メソッド:
    • 商品の数量を減らす。
    • もし数量が0になったら、その商品をカートから削除。
  4. total_price メソッド:
    • カート内の全商品の合計金額を計算。
  5. show_cart メソッド:
    • カートの内容を表示。
    • 空の場合は「カートは空です」と表示。

5. 実行結果

りんご: 2個, 単価: 150円
バナナ: 3個, 単価: 100円
合計金額: 750円

りんご: 2個, 単価: 150円
バナナ: 2個, 単価: 100円
合計金額: 650円

最終的な合計金額: 650円

6. まとめ

このショッピングカートのシステムでは、商品を追加・削除しながら、カート内の商品を管理する方法を学びました。Python のクラスや辞書の扱い方を理解するのに良い練習になります。

コメント

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