Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでネストされたリストの中に特定のリストが存在するか確認する方法

Pythonでは、リストをネスト(入れ子)にすることができます。つまり、リストの要素そのものがリストであるケースです。本記事では、ある特定のリストが、外側のより大きなリストの要素として存在するかどうかを判定する方法を解説します。

方法1:in演算子を使う

最もシンプルで直感的な方法は、in 演算子を使うことです。内側のリストが、外側のリストの要素として含まれているかどうかを直接チェックできます。

コード例

listA = [[-9, -1, 3], [11, -8], [-4, 434, 0]]
search_list = [-4, 434, 0]

# 元のリストを表示
print("Given List :\n", listA)
print("list to Search: ", search_list)

# in演算子で判定
if search_list in listA:
    print("Present")
else:
    print("Not Present")

実行結果

上記のコードを実行すると、次のような出力が得られます。

Given List :
[[-9, -1, 3], [11, -8], [-4, 434, 0]]
list to Search: [-4, 434, 0]
Present

方法2:any関数を使う

any() 関数を利用する方法もあります。これは、リストから要素を1つずつ取り出し、検索対象のリストと一致するかどうかを判定するものです。ジェネレータ式や for ループと組み合わせて使います。

コード例

listA = [[-9, -1, 3], [11, -8], [-4, 434, 0]]
search_list = [-4, 434, 0]

# 元のリストを表示
print("Given List :\n", listA)
print("list to Search: ", search_list)

# any関数で判定
if any(x == search_list for x in listA):
    print("Present")
else:
    print("Not Present")

実行結果

上記のコードを実行すると、次のような出力が得られます。

Given List :
[[-9, -1, 3], [11, -8], [-4, 434, 0]]
list to Search: [-4, 434, 0]
Present

まとめ

どちらの方法でも同じ結果が得られます。単純な存在チェックであれば in 演算子が最も簡潔で読みやすく、条件を柔軟にカスタマイズしたい場合には any() 関数が便利です。用途に応じて使い分けるとよいでしょう。

  1. Pythonで連結リストの要素がすべてペアで存在するかどうかを確認する方法

    問題の概要片方向連結リストが与えられたとき、リスト内のすべての要素がペア(2個ずつ)で存在するかどうか、言い換えれば、すべての要素が偶数回出現しているかどうかを判定します。例えば、入力が [2,5,5,2,3,3] の場合、各要素は2回ずつ出現しているため、出力は True になります。解決アプローチ:XOR(排他的論理和)の活用この問題は、XOR演算の性質を利用すると効率的に解くことができます。XORには次のような重要な性質があります。同じ値同士のXORは0になる(x XOR x = 0)任意の値と0のXORは元の値になる(x XOR 0 = x)XORは交換法則・結合法則が成り立つしたがっ

  2. PythonのBST(二分探索木)に指定した合計になるトリプレットが存在するか判定する方法

    問題概要 整数値を持つ二分探索木(BST)と、ある数値「total」が与えられたとします。このとき、BSTの中から3つの要素を選び、その合計が「total」と一致するような組み合わせ(トリプレット)が存在するかどうかを判定するのが、本記事のテーマです。 例えば、次のようなBSTが入力として与えられた場合を考えてみます。 total = 12 の場合、出力は True になります。 解法のアプローチ この問題は、BSTを中順走査(inorder traversal)するとノードの値が昇順に並ぶという性質を利用することで、効率的に解くことができます。全体の流れは以下の通りです。 結果を格納する