在列表列表中查找匹配的主要值

时间:2017-04-16 19:51:07

标签: python

我有一份清单清单。它们最初是空列表,在我的程序过程中,我通过在前面插入值来添加到列表中。这是一场纸牌游戏。与纸牌相似。因此,列表列表以Ace开头,以King结束。我目前要做的是确定玩家何时真正赢得比赛,这意味着当国王是列表列表中每个列表的第一张牌时。我在做这件事时遇到了麻烦。目前,当我遍历我的函数时,一旦一个列表具有王值,它就会让我知道我赢了。

BANNER = WINNER!!
foundations = [ [], [], [], [] ]

for lst in foundations[:]:
    for item in lst:
        if item.rank() == 13: # the rank of a king
            print(BANNER)
            return True
else:
    return False

我正在寻找的是:

when foundations = [ [13], [13], [13], [13] ] # all four list containing king

then the loop returns True

任何提示如何阻止代码给我错误的希望并在我真正赢得比赛时让我知道?

1 个答案:

答案 0 :(得分:0)

问题是,只要if item.rank() == 13条件为True,就会从函数返回,这对胜利来说是不够的。

您似乎也在逐步浏览所有列表值,但您只需要逐步浏览每个列表中的第一个。

所以你要找的代码是

for list in foundations:
    if list[0] != 13:
        return False  # this is definitely not a win
return True # this code will only work if return False didn't work

在这种情况下,我假设每个list至少有一个值。根据您的问题,您可能希望解决此假设。