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

您可以使用lambda或匿名函数:

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

或者,只需使用列表推导:

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

您可以将其作为列表理解来执行:

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

现在您可以调整此函数以与 using 一起filter使用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 回答