はじめに
Pythonのcollectionsモジュールには、リストと似た機能を持つdeque(デック)というデータ型があります。dequeは高速なデータの追加・削除が可能で、効率的なキューやスタックの実装に役立ちます。
この記事では、Python 3.11で新たに導入されたdeque.copy関数の使い方とその活用方法について初心者向けに詳しく解説します。
deque.copy関数とは?
deque.copy関数は、元のdequeオブジェクトを浅いコピー(shallow copy)で複製するためのメソッドです。この関数を使うことで、元のdequeの要素を保持したまま、新しいdequeオブジェクトを作成できます。
なぜ浅いコピーが必要?
浅いコピーでは、オブジェクトの参照がコピーされるため、ネストされたリストやオブジェクトは同じ参照先を持ちます。データの整合性を保ちつつ、新しいデータ操作を行いたい場合に便利です。
deque.copy関数の基本構文
from collections import deque
# dequeの作成
d = deque([1, 2, 3, 4])
# dequeのコピー
new_d = d.copy()
print(new_d)
実行結果
deque([1, 2, 3, 4])
deque.copy関数の使用例
例1: dequeのコピー後に新しい要素を追加する
from collections import deque
original = deque([10, 20, 30])
copy = original.copy()
copy.append(40)
print("Original:", original)
print("Copy:", copy)
実行結果
Original: deque([10, 20, 30])
Copy: deque([10, 20, 30, 40])
deque.copy関数の応用例
例2: ネストされたリストのコピー
from collections import deque
nested = deque([[1, 2], [3, 4]])
copy = nested.copy()
# コピーの要素を変更
copy[0][0] = 100
print("Original:", nested)
print("Copy:", copy)
実行結果
Original: deque([[100, 2], [3, 4]])
Copy: deque([[100, 2], [3, 4]])
この例からもわかるように、浅いコピーではネストされたリストの参照が共有されます。
まとめ
Python 3.11で導入されたdeque.copy関数は、dequeオブジェクトの浅いコピーを手軽に行うための便利なメソッドです。浅いコピーの特性を理解し、用途に応じて使い分けることが重要です。
ポイントまとめ:
- deque.copy関数は浅いコピーを作成
- ネストされた要素は参照が共有される
- コピー後のオブジェクトは元のdequeとは独立して操作できる
今後、より複雑なデータ構造を扱う際に役立つでしょう。