如何检查另一个列表中列表的所有三个元素是否存在

How to check presence of all three elements of list in another list

你好,我是 Python 的新手,需要一些帮助

我有以下字符串列表

my_list = ["-Public-", "-Private-", "-Protected-"]

和另一个列表

sgList = [ 'launch-wizard-16', 'launch-Private-1', 'default', 'EP-Protected-12', 'default', 'launch-Public-13']

我想检查 my_list 列表中的所有三个元素是否都存在于 sgList 中,如果是,则 return 为真,否则为假。如果其中之一不存在,那么它应该 return false。

我有以下代码,但即使找到其中一个,这也会 return 正确。

imported = (any(rails.lower() in sg.lower() for rails in my_list for sg in sgList))

有人可以指导我在这里可以做什么来检查所有三个元素的存在

all(elem in sgList for elem in my_list)

哪里

  • ... for elem in my_list 是一个遍历 my_list
  • 中所有元素的生成器
  • elem in sgList 是一个布尔表达式,检查迭代的元素是否确实在 sgList 中,这样会生成多个 TrueFalse 值并且
  • 最终all()将所有的布尔表达式组合成一个,即如果所有的都是True它就是True(或者参见any()

您可以组合 allany:

my_list = ["-Public-", "-Private-", "-Protected-"]
sgList = ['launch-wizard-16', 'launch-Private-1', 'default', 'EP-Protected-12', 'default', 'launch-Public-13']

output = all(any(x in sg for sg in sgList) for x in my_list)
print(output) # True

例如,给定 x == '-Public-'any(x in sg for sg in sgList) 测试 '-Public-' 是否是 sgList 中任何项目的子字符串。由于有这样一项 ('launch-Public-13'),any(x in sg for sg in sgList) 的计算结果为 True

现在 all(... for x in my_list) 检查这是否适用于 my_list 中的每个项目 x