Pythonでリストから重複する部分文字列を削除する方法
プログラミングをしていると、リストに含まれる重複した要素を取り除いてデータを整理したい場面があります。Pythonでは、標準ライブラリに用意されているさまざまなメソッドを組み合わせることで、この処理を簡単に実現できます。
本記事では、リスト内の文字列を区切り文字で分割し、重複した部分文字列を除去する2つの方法を具体的なコード例とともに解説します。
set()とsplit()を組み合わせる方法
まず紹介するのは、split()メソッドとset()メソッドを組み合わせたアプローチです。split()メソッドで各文字列を区切り文字ごとに分割して重複チェックの対象とし、set()メソッドによって重複を自動的に排除した一意な要素のみを格納します。
コード例
# リストの初期化
listA = [ 'xy-xy', 'pq-qr', 'xp-xp-xp', 'dd-ee']
print("Given list : ",listA)
# set() と split() を使用
res = [set(sub.split('-')) for sub in listA]
# 結果の出力
print("List after duplicate removal : " ,res)
実行結果
上記のコードを実行すると、次のような結果が得られます。
Given list : ['xy-xy', 'pq-qr', 'xp-xp-xp', 'dd-ee']
List after duplicate removal : [{'xy'}, {'pq', 'qr'}, {'xp'}, {'ee', 'dd'}]
この方法では、元のリストの構造を保ちながら、各要素ごとに重複のない部分文字列のセットが生成されます。ハイフンで連結された「xy-xy」は「{'xy'}」に、「xp-xp-xp」は「{'xp'}」に変換されているのがわかります。
リスト内包表記とsetを使う方法
次に、リスト内包表記とforループを組み合わせる方法を見ていきましょう。こちらの方法では、分割後のすべての部分文字列を集合に集約することで、リスト全体から一意な要素だけを抽出できます。
コード例
# リストの初期化
listA = [ 'xy-xy', 'pq-qr', 'xp-xp-xp', 'dd-ee']
print("Given list : ",listA)
# set 内包表記を使用
res = list({i for sub in listA for i in sub.split('-')})
# 結果の出力
print("List after duplicate removal : " , res)
実行結果
上記のコードを実行すると、次のような結果が得られます。
Given list : ['xy-xy', 'pq-qr', 'xp-xp-xp', 'dd-ee'] List after duplicate removal : ['dd', 'pq', 'ee', 'xp', 'xy', 'qr']
この方法では、すべての要素を1つの集合にまとめるため、リスト全体を通じて完全に一意な部分文字列のリストが得られます。なお、setは順序を保証しないため、出力順序は実行環境によって異なる場合がある点に注意してください。
まとめ
Pythonでリスト内の重複した部分文字列を削除するには、split()で文字列を分割し、set()で重複を排除するのが基本です。元のリスト構造を維持したい場合はリスト内包表記で各要素ごとにsetを作成し、全体から一意な値を抽出したい場合はset内包表記を活用するとよいでしょう。
-
Pythonでリストに重複要素が含まれているかを判定する方法
数値のリストが与えられたとき、そのリストに重複した要素が含まれているかどうかを確認する必要があります。例えば、リストが [1,5,6,2,1,3] の場合、同じ「1」が2つ存在するため結果は True になります。一方、リストが [1,2,3,4] の場合は重複が存在しないため、結果は False となります。解決のアプローチこの問題は、Pythonの set(集合)データ構造の性質を利用することで簡単に解決できます。set は重複しない一意な値のみを保持するという特徴を持っています。一方、リストは重複した値を含むことが可能です。そこで、リストを set に変換すると、重複要素が存在する場合に
-
Pythonでリストから偶数だけを抽出する方法(forループ・whileループ・filter()の使い方)
データ分析では、特定の条件を満たす値だけをリストから抽出(フィルタリング)する処理が必要になることがよくあります。本記事では、Pythonを使ってリストから偶数の値のみを取り出す方法を、複数のアプローチごとにわかりやすく解説します。基本的な考え方はシンプルです。リストの各要素を順番に取り出し、2で割った余りを確認します。余りが0であればその要素は偶数と判断できます。こうして判定した偶数だけを集めて新しいリストを作成すれば、それがフィルタリング条件を適用した結果となります。それでは、代表的な3つの実装方法を見ていきましょう。1. forループを使う方法最もシンプルで直感的なのが、forループを使