Pythonでネストされたリスト(リストのリスト)内に要素が存在するか確認する方法
Pythonではリストをネストすることができ、リストの要素がそれ自体リストになっている場合があります。本記事では、外側の大きなリストに含まれるサブリストの中に、指定した要素が存在するかどうかを判定するための3つの方法を、具体的なコード例とともにわかりやすく解説します。
any() 関数を使う方法
まず各サブリストの中に目的の要素が存在するかを調べ、その結果をもとに要素がリスト全体に存在するかを判定します。any() 関数とジェネレータ式を組み合わせると、いずれかのサブリストに要素が見つかった時点で True を返すため、簡潔に記述できるのが特徴です。
コード例
listA = [[-9, -1, 3], [11, -8],[-4,434,0]]
search_element = -8
# 与えられたリスト
print("Given List :\n", listA)
print("Element to Search: ",search_element)
# any() を使用
if any(search_element in sublist for sublist in listA):
print("Present")
else:
print("Not Present")
出力結果
上記のコードを実行すると、次の結果が得られます。
('Given List :
', [[-9, -1, 3], [11, -8], [-4, 434, 0]])
('Element to Search: ', -8)
Present
in 演算子を使う方法
このアプローチでは、in 演算子によるシンプルな検索を行います。ネストしたリストをジェネレータ式で平坦化し、その中に要素が含まれているかを直接確認します。ここでは、要素が存在する場合と存在しない場合の両方をチェックしています。
コード例
listA = [[-9, -1, 3], [11, -8],[-4,434,0]]
search_element = -8
# 与えられたリスト
print("Given List :\n", listA)
print("Element to Search: ",search_element)
# in を使用
if search_element in (item for sublist in listA for item in sublist):
print("Present")
else:
print("Not Present")
search_element = 13
print("New Element to Search: ",search_element)
# in を使用
if search_element in (item for sublist in listA for item in sublist):
print("Present")
else:
print("Not Present")
出力結果
上記のコードを実行すると、次の結果が得られます。
Given List : [[-9, -1, 3], [11, -8], [-4, 434, 0]] Element to Search: -8 Present New Element to Search: 13 Not Present
itertools.chain を使う方法
itertools モジュールの chain 関数を使うと、複数のサブリストをひとつの連続したイテラブルへと展開(平坦化)できます。これにより、in 演算子でネストされたリスト全体に対して直接要素の有無を確認できます。遅延評価されるため、大規模なデータでもメモリ効率よく動作する点がメリットです。
コード例
from itertools import chain
listA = [[-9, -1, 3], [11, -8],[-4,434,0]]
search_element = -8
# 与えられたリスト
print("Given List :\n", listA)
print("Element to Search: ",search_element)
# in を使用
if search_element in chain(*listA):
print("Present")
else:
print("Not Present")
search_element = 13
print("New Element to Search: ",search_element)
# in を使用
if search_element in chain(*listA):
print("Present")
else:
print("Not Present")
出力結果
上記のコードを実行すると、次の結果が得られます。
Given List : [[-9, -1, 3], [11, -8], [-4, 434, 0]] Element to Search: -8 Present New Element to Search: 13 Not Present
まとめ
このように、any() 関数、in 演算子とジェネレータ式の組み合わせ、そして itertools.chain の3つの方法で、ネストされたリスト内の要素検索を実現できます。コードの可読性や扱うデータの規模に応じて、最適な方法を選択してください。
-
Pythonで変数の存在を確認する方法|locals()・globals()・hasattr()の使い方
Pythonでは、変数が存在するかどうかを確認するために、組み込み関数の locals()、globals()、そして hasattr() を活用します。それぞれの役割と具体的な使い方を、サンプルコードと実行結果をもとに解説します。 変数の存在確認に使える3つの方法 locals():現在のローカルスコープ(関数やメソッド内)で定義されている変数を辞書形式で返します。 globals():モジュール全体(グローバルスコープ)で定義されている変数を辞書形式で返します。 hasattr():オブジェクトが指定した名前の属性を持っているかどうかを真偽値で判定します。 サンプルコード x = 10
-
Pythonリスト入門:作成から操作、削除まで徹底解説
このチュートリアルでは、Pythonのリスト(List)について学びます。リストの作成方法、要素へのアクセス、要素の追加・削除、リスト自体の削除など、基本的な操作を一つずつ丁寧に解説していきます。 Pythonでは、リストは角括弧 [] を使って構築し、各要素はカンマ , で区切って記述します。 Pythonのリストは、異なる型のオブジェクトを混在させて格納できるのが特徴です。すべて文字列である必要も、整数である必要もありません。例えば、以下のように複数の型が混ざったリストを作成できます。mixedTypesList = [a, True, 1, 1.0] リストの作成方法 リストは、角括弧