测试是否在列表元素中找到集合中的两个项目
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 中的字符串的 - 如果您不想改变该集合,您可能想在另一组中单独执行此操作。
我有一组名为 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 中的字符串的 - 如果您不想改变该集合,您可能想在另一组中单独执行此操作。