测试是否在列表元素中找到集合中的两个项目

Test if two items in a set are found in a list element

我有一组名为 mySet 的两个值。它看起来像这样:

mySet = {1010101, 20202030}

我有一个列表 myList,每行包含四个字符串。列表中的一行看起来像这样:

1 1010101 20202030 15.3

四个字符串中的每一个都由一个 space 分隔。我想构造一个循环,如果 mySet 中的两个值都包含在 myList 的一行中,则循环将为 return TRUE。我有一个想法,也许我可以制作一个仅包含 myList 每一行的第二个和第三个元素的新列表,然后根据它检查 mySet 中的值,但我也不确定我将如何实现它。提前感谢您的宝贵时间。

for line in myList:
    print(mySet.issubset(map(float, line.split(" "))))

split 将 space 分隔值转换为列表

map将所有列表元素转换为浮点数进行比较

对方

issubset (or equivalently issuperset) to check whether one is a subset

如果 "return" 你的意思是一个函数(或任何可调用函数),你需要单独这样做,尽管有 for 循环,因为 for 循环不 return 任何东西。

然而,这个问题可以通过内置的 any and all 函数轻松解决,如下所示:

mySet = {str(i) for i in {1010101, 20202030}}
myList = ["1 1010101 20202030 15.3"]

result = any(all(s in l for s in mySet) for l in myList)

print(result)

它将打印True。我们已经在一行中完成了所有计算。另外,请注意我是如何将所有整数转换为 mySet 中的字符串的 - 如果您不想改变该集合,您可能想在另一组中单独执行此操作。