有时我有一个列表列表,我需要在所有列表中搜索一个项目。我使用以下python代码:

boolean found = false

for(hayStack : listOfHayStacks){
   found = findNeedle(hayStack)

   if(found)
      break;
}

if(!found){
    // error case
}

我似乎经常遇到这种情况,并且我总是觉得应该有一个更好的方法来处理这种情况。

是否存在一个“atLeastOne”构造来汇总所有结果?

最佳答案

Python为此具有特殊的语法。

for haystack in haystacks:
    if find_needle(haystack):
        break
else:
    # error case (did not break)

根据代码中需要多少逻辑,您还可以执行以下操作:
some_needles_exist = any(find_needle(x) for x in haystacks)
all_stacks_have_needles = all(find_needle(x) for x in haystacks)

08-28 23:37