2

2 次元のリストが与えられた場合、サブリストを含むすべてのものを見つけたいと思います。次のようなことができることに気づきました:

#Psuedo-Python (not kosher)
def MatchAll(theList,toMatch):
    result=list(theList)
    for nMatch in toMatch:
        for nResult in result:
            if not nMatch in nResult:
                result.remove(nResult)
    return result

しかし、これにはあらゆる種類の悪い点があるようです。私がこれまでに見たり扱ったりした Python コードとは非常に異なっているように見えますが、それを繰り返しながらリストに変更を加えていることを除けば、私が読んだことはまったく良いことではありません。また、これはひどく非効率的です。私の目的では toMatch の長さが 3 を超えるべきではありませんが、theList の長さは不明であり、非常に大きくなる可能性があります。どんな助けでも大歓迎です、そして前もって感謝します。

4

1 に答える 1

3

私がしたいことは、「一致」リスト内のすべての項目に一致するサブリストのみを保持することです。

def match_all(the_list, to_match):
    return [sublist for sublist in the_list 
                if all(item in sublist for item in to_match)]

を使用してこれを高速化できますset

def match_all(the_list, to_match):
    matches = set(to_match).issubset
    return [sublist for sublist in the_list if matches(sublist)]
于 2011-11-09T22:48:05.363 に答える