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. コードの解説
__init__
メソッド:- カートを空の辞書 (
self.items
) で初期化。 - 商品名をキーとし、価格と数量を辞書で管理。
- カートを空の辞書 (
add_item
メソッド:- 商品がすでにカートにある場合は、数量を増やす。
- ない場合は、新しく辞書に追加。
remove_item
メソッド:- 商品の数量を減らす。
- もし数量が0になったら、その商品をカートから削除。
total_price
メソッド:- カート内の全商品の合計金額を計算。
show_cart
メソッド:- カートの内容を表示。
- 空の場合は「カートは空です」と表示。
5. 実行結果
りんご: 2個, 単価: 150円
バナナ: 3個, 単価: 100円
合計金額: 750円
りんご: 2個, 単価: 150円
バナナ: 2個, 単価: 100円
合計金額: 650円
最終的な合計金額: 650円
6. まとめ
このショッピングカートのシステムでは、商品を追加・削除しながら、カート内の商品を管理する方法を学びました。Python のクラスや辞書の扱い方を理解するのに良い練習になります。
コメント