将元组与元组序列的某些元素匹配

Matching a tuple with certain elements of a sequence of tuples

我有一系列答案元组(用于单词搜索游戏),其中包含:

[(0, 0, 'downright', 'plain'), (5, 4, 'up', 'on'), (5, 1, 'left', 'mainly'), (4, 5, 'left', 'falls'), (0, 2, 'right', 'spain'), (0, 3, 'downright', 'in'), (1, 3, 'upright', 'rain'), (3, 0, 'left', 'the')]

我想将猜测元组与答案相匹配,猜测是一个包含以下内容的元组:

(0, 0, 'downright')

如何将猜测元组与序列中的答案元组之一相匹配?

我的尝试(尽管它有时会给出错误,即使它确实匹配):

def is_valid_answer(answers, guess):
found = True

for x,y in enumerate(answers):
    if guess == (answers[x][0:3]):
        return found
    else:
        found = False
        
        return found

如果 answers 的第一项与 guess 不匹配,您的循环已经结束,因为您 return found (False) 立即.因此你的循环总是只进行一次迭代并且只比较第一项。

Return 仅在循环中(使用 True),如果找到匹配项。如果没有匹配项,您可以在循环后 return False

def is_valid_answer(answers, guess):
    for x in answers:
        if guess == x[0:3]:
            return True
    return False

顺便说一句:这里你不需要enumerate,你可以简单地比较产生的值(x)。