Python 生成不在字符串列表中的子字符串列表

Python 生成不在字符串列表中的子字符串列表,python,string,list,Python,String,List,我有一个字符串列表和一个子字符串列表。我想生成一个不在字符串列表中的子字符串列表 substring_list=["100", "101", "102", "104", "105"] string_list=["101 foo", "102 bar", "103 baz", "104 lorem"] 我试图执行new_list=[s for s in substring_list,如果s不在[I for I in string_list]],但这不起作用。我也尝试过any()的各种用法,但都没

我有一个字符串列表和一个子字符串列表。我想生成一个不在字符串列表中的子字符串列表

substring_list=["100", "101", "102", "104", "105"]
string_list=["101 foo", "102 bar", "103 baz", "104 lorem"]
我试图执行
new_list=[s for s in substring_list,如果s不在[I for I in string_list]]
,但这不起作用。我也尝试过
any()
的各种用法,但都没有成功

我想返回
new_list=[“100”,“105”]

您可以尝试以下方法:

[sub for sub in substring_list if all(sub not in s for s in string_list)]
# ['100', '105']

或者:

[sub for sub in substring_list if not any(sub in s for s in string_list)]
# ['100', '105']
您可以尝试以下方法:

[sub for sub in substring_list if all(sub not in s for s in string_list)]
# ['100', '105']

或者:

[sub for sub in substring_list if not any(sub in s for s in string_list)]
# ['100', '105']

编写的代码返回全部,因为“for i in string_list”创建了一个新的集合相同的string_list数组解决它被方便地拆分器官以受益于string_list,然后当您启动i[0]时,您创建了类似的string_list系统,但只包含没有字母的数字

so

new_list = [s for s in substring_list if s not in [i.split()[0] for i in string_list]]

编写的代码返回全部,因为“for i in string_list”创建了一个新的集合相同的string_list数组解决它被方便地拆分器官以受益于string_list,然后当您启动i[0]时,您创建了类似的string_list系统,但只包含没有字母的数字

so

new_list = [s for s in substring_list if s not in [i.split()[0] for i in string_list]]

来自Ruby背景,由于Python有
any
all
,我寻找了一个函数或方法,但惊讶地发现它不存在

如果您经常使用
not any
all not
,那么定义
none()
可能会很有趣:


但这可能会导致与其他人的混淆。这可能就是它不存在的原因。

来自Ruby背景,由于Python有
any
all
,我寻找了一个函数或方法,但惊讶地发现它不存在

如果您经常使用
not any
all not
,那么定义
none()
可能会很有趣:


但这可能会导致与其他人的混淆。这可能就是它不存在的原因。

太好了,这正是我需要的。谢谢。为什么第二种方法会更有效呢?而且
all
会在遇到false时停止迭代,但是
any
必须继续进行,直到遇到true为止。我要说的是,无论输入数据是什么,
所有非
任何非
都是完全等效的。@EricDuminil啊,我想你是对的。我错了。太好了,这正是我需要的。谢谢。为什么第二种方法会更有效呢?而且
all
会在遇到false时停止迭代,但是
any
必须继续进行,直到遇到true为止。我要说的是,无论输入数据是什么,
所有非
任何非
都是完全等效的。@EricDuminil啊,我想你是对的。我认为这是错误的。虽然这个代码片段是受欢迎的,并可能提供一些帮助,但它将是如何以及为什么解决这个问题。记住,你是在将来回答读者的问题,而不仅仅是现在提问的人!请在回答中添加解释,并说明适用的限制和假设。虽然欢迎使用此代码片段,并可能提供一些帮助,但它将说明如何以及为什么解决此问题。记住,你是在将来回答读者的问题,而不仅仅是现在提问的人!请在回答中添加解释,并说明适用的限制和假设。