1. ホーム
  2. python

[解決済み] Pythonでオブジェクトのリストを検索する

2022-10-08 10:36:54

質問

C言語の構造体のような、データ要素を保持するだけの簡単なクラスを作成するとします。 オブジェクトのリストから、ある値に等しい属性を持つオブジェクトを検索する方法を見つけ出そうとしています。 以下は、私がやろうとしていることを説明するための簡単な例です。

例えば

class Data:
    pass

myList = []

for i in range(20):
    data = Data()
    data.n = i
    data.n_squared = i * i
    myList.append(data)

n == 5 の要素を含むかどうかを判断するために myList リストを検索するにはどうしたらよいでしょうか?

私はググってPythonのドキュメントを検索して、私はリスト内包でこれを行うことができるかもしれないと思うが、私は確信していない。 ところで、私は Python 2.4.3 を使用しなければならないので、新しい gee-whiz 2.6 または 3.x の機能は私には利用できないことを追加するかもしれません。

どのように解決するのですか?

のリストを取得することができます。 すべて にマッチする要素のリストをリスト内包で取得できます。

[x for x in myList if x.n == 30]  # list of all elements with .n==30

単にリストに を含むかどうかを判断したい場合。 要素が含まれているかどうかを調べ、それを (比較的) 効率的に行いたいのであれば

def contains(list, filter):
    for x in list:
        if filter(x):
            return True
    return False

if contains(myList, lambda x: x.n == 3)  # True if any element has .n==3
    # do stuff