0

文字列のリストがあり、excludeList リスト内の文字列を含む文字列を削除したいと考えています。フィルターは関数とリストを受け取りますが、どのように「関数化」できexcluded not inますか? excludeList は次のようになります。["A2123", "B323", "C22"]

kolaDataList は次のようになります。["Very long string somethingsomething B323", "Lorem ipsum"]

そして結果は[Lorem ipsum]

for excluded in excludeList:
    kolaDataList = filter((excluded not in), kolaDataList)

これは Haskell で動作すると思いますが、Python でこれを行うにはどうすればよいですか?

4

3 に答える 3

3

You can use a lambda, or anonymous function:

for excluded in excludeList:
    kolaDataList = filter(lambda l: excluded not in l, kolaDataList)

Alternatively, just use a list comprehension:

for excluded in excludeList:
    kolaDataList = [l for l in kolaDataList if excluded not in l]
于 2012-08-14T14:31:12.480 に答える
3

You can do this as a list comprehension:

kolaDataList = [l for l in kolaDataList if excluded not in l]
于 2012-08-14T14:31:54.630 に答える
1

関数などを使用して、コンテンツをフィルター処理する独自の関数を作成する必要がありますlambda。条件で値をフィルタリングする汎用関数を作成しましょう。

generic_filter = lambda item, excludeList=[]: item not in excludeList

これで、この関数をfilterusingで使用できるように適応させることができますfunctools.partial

import functools

# This function will be used with specific exclude list you pass it
my_filter = functools.partial(generic_filter, excludeList=excludeList)

# Apply filter
result = filter(my_filter, kolaDataList)

中間ジェネリック関数を作成する利点は、それを再利用してさまざまな除外リストを適用できることです。

于 2012-08-14T15:03:16.523 に答える