如果列表项包含特定子字符串,则将该列表项保存到新列表

2024-06-06 04:12:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我想检查字符串列表中的字符串是否包含某个子字符串。如果需要,我想将该列表项保存到新列表中:

list = ["Maurice is smart","Maurice is dumb","pie","carrots"]

我尝试使用以下代码:

new_list = [s for s in list if 'Maurice' in list]

但是如果列表中的一个项目是'Maurice',那么它只是复制列表。 所以我想知道,是否有一种方法可以通过使用以下语法来解决这个问题:

if "Maurice" in list:
    # Code that saves all list items containing the substring "Maurice" to a new list

结果应该是:

new_list = ["Maurice is smart", "Maurice is dumb"]

如果一直在寻找一种方法来做这件事,但我找不到任何东西。你知道吗


Tags: 方法字符串代码in列表newforif
3条回答

你可以使用列表理解。你知道吗

另外,确保不要使用内置的list作为变量名。你知道吗

my_list = ["Maurice is smart", "Maurice is dumb", "pie", "carrots"]
[e for e in my_list if 'Maurice' in e]

你可以这样做:

list = ["Maurice is smart","Maurice is dumb","pie","carrots"]

new_list = [x for x in list if "Maurice" in x]

print(new_list)

输出:

['Maurice is smart', 'Maurice is dumb']

您可以使用Python的内置filter

data = ["Maurice is smart", "Maurice is dumb", "pie", "carrots"]
res = filter(lambda s: 'Maurice' in s, data)
print(res)

输出:

['Maurice is smart', 'Maurice is dumb']

第一个参数是一个谓词函数(这里是一个简单的lambda),它的值必须为True才能将iterable的元素视为匹配项。你知道吗

filter在必须基于谓词筛选iterable时非常有用。你知道吗

另外,再多一点,想象一下要过滤的数据:

data = ["Maurice is smart","Maurice is dumb","pie","carrots", "maurice in bikini"]
res = filter(lambda s: 'maurice' in s.lower(), list)
print(res)

输出:

['Maurice is smart', 'Maurice is dumb', 'maurice in bikini']

相关问题 更多 >