Python 如果列表项包含特定子字符串,则将该列表项保存到新列表中
我想检查字符串列表中的字符串是否包含某个子字符串。如果需要,我想将该列表项保存到新列表中:Python 如果列表项包含特定子字符串,则将该列表项保存到新列表中,python,list,python-3.x,Python,List,Python 3.x,我想检查字符串列表中的字符串是否包含某个子字符串。如果需要,我想将该列表项保存到新列表中: list = ["Maurice is smart","Maurice is dumb","pie","carrots"] 我已尝试使用以下代码: new_list = [s for s in list if 'Maurice' in list] 但是,如果列表中的一个项目是'Maurice',那么它只会复制列表。 所以我想知道是否有一种方法可以通过使用以下语法来解决这个问题: if "Maurice
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"]
如果我一直在寻找一种方法,但我什么也找不到。您可以这样做:
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']
['Maurice is smart', 'Maurice is dumb']
您可以使用列表理解 另外,确保不要将内置的
列表
用作变量名
my_list = ["Maurice is smart", "Maurice is dumb", "pie", "carrots"]
[e for e in my_list if 'Maurice' in e]
您可以使用Python的内置: 输出:
['Maurice is smart', 'Maurice is dumb']
['Maurice is smart', 'Maurice is dumb']
第一个参数是一个谓词函数(这里是一个简单的lambda),它的值必须为True才能将iterable的元素视为匹配项
每当必须基于谓词筛选iterable时,filter
非常有用
另外,还有一点,现在想象一下要过滤的数据:
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']
感谢您提到没有使用
list
作为变量名确切地说,为什么筛选总是比列表理解更可取?对于阅读此答案的人:我强烈建议不要为自己的变量使用python内置名称。在此处使用列表作为变量名将阻止代码用户使用关键字列表。这可能会产生各种不良后果。