Pythonでリストの先頭に要素を追加し、末尾から削除する2つの方法
Pythonでデータ操作を行っていると、リストへの要素の追加や削除を頻繁に行う場面に出会います。Pythonには、こうした操作を効率的に実現するための機能が、標準ライブラリや外部ライブラリとして豊富に用意されています。本記事では、「リストの先頭に要素を追加しながら、末尾の要素を削除する」という操作を、2つの異なるアプローチで実装する方法を解説します。
方法1:+演算子とスライスを組み合わせる
もっともシンプルなのが、+演算子とスライスを組み合わせる方法です。新しい要素を含むリストを既存のリストの先頭に連結し、同時に[:-1]というスライスで末尾の要素を除外します。
サンプルコード
values = ['Tue', 'wed', 'Thu', 'Fri', 'Sat', 'Sun']
print("元のリスト : ", values)
# 先頭に新しい要素を追加し、末尾の要素を削除する
result = ['Mon'] + values[:-1]
print("追加・削除後のリスト : " + str(result))上記のコードを実行すると、次のような出力が得られます。
元のリスト : ['Tue', 'wed', 'Thu', 'Fri', 'Sat', 'Sun'] 追加・削除後のリスト : ['Mon', 'Tue', 'wed', 'Thu', 'Fri', 'Sat']
方法2:collectionsモジュールのdequeを使う
もうひとつの方法は、標準ライブラリcollectionsが提供するdeque(デック:双方向キュー)を使うアプローチです。dequeにはappendleft()やappend()といったメソッドが用意されており、さらにpop()メソッドも備えています。これらを組み合わせれば、左端(先頭)へ要素を追加し、右端(末尾)から要素を取り除くことができます。リストと比べて、両端への追加・削除を高速(O(1))に処理できる点も大きな利点です。
サンプルコード
import collections
a = collections.deque(['Tue', 'wed', 'Thu', 'Fri', 'Sat', 'Sun'])
print('元のリスト: ', a)
a.appendleft('Mon')
a.pop()
print('新しいリスト: ', a)上記のコードを実行すると、次のような出力が得られます。
元のリスト: deque(['Tue', 'wed', 'Thu', 'Fri', 'Sat', 'Sun']) 新しいリスト: deque(['Mon', 'Tue', 'wed', 'Thu', 'Fri', 'Sat'])
まとめ
+演算子を使う方法は手軽に書ける反面、処理のたびに新しいリストが生成されるため、サイズの大きいリストでは非効率になることがあります。一方、dequeを使えば両端への操作が高速に行えるため、先頭・末尾への追加や削除を繰り返すようなケースでは、dequeの利用がおすすめです。
-
Pythonでインデックスを指定してリストから要素を削除する方法
Pythonでリストからインデックスを指定して要素を削除するには、主に2つの方法があります。del文を使う方法と、pop()メソッドを使う方法です。 del文で要素を削除する del文は、削除したい要素のインデックスを指定して使用します。指定した位置の要素がリストから取り除かれます。 >>> L1=[11,22,33,44,55,66,77] >>> del L1[2] >>> L1 [11, 22, 44, 55, 66, 77] 上記の例では、インデックス2(3番目の要素「33」)が削除され、リストの要素数が1つ減っています。del文は
-
Pythonでリストからオブジェクトを削除する方法|remove・del・popの違いと使い分け
Pythonでリストからオブジェクト(要素)を削除するには、主にremove()・del・pop()という3つの方法があります。それぞれ挙動が異なるため、目的に応じて使い分けることが重要です。 1. remove():値を指定して削除する remove()メソッドは、引数に指定した値に一致する最初の要素をリストから削除します。インデックスではなく値そのものを指定する点が特徴です。 使用例 a = [3, 2, 3, 2] a.remove(3) print(a) 実行結果 [2, 3, 2] この例では、最初に出現する「3」だけが削除され、2つ目の「3」はそのまま残ります。また、リスト