首页 > 解决方案 > 有什么方法可以减少“嵌套”吗?

问题描述

问题是家庭作业问题。我想我解决了它,但我想知道这是最好的解决方案吗?问题是获取一个列表并遍历它,看看它是否包含特定的子序列:007。这里的子序列是在数学意义上使用的(所以 0110227确实包含 007 并返回 True)。

def spy_game(nums):
    if 0 in nums:
        a_1=nums.index(0)
        nums_1=nums[a_1+1:]
        if 0 in nums_1:
            a_2=nums_1.index(0)
            if 7 in nums[a_2+1:]:
                return True 
            else:
                return False
        else:
            return False
    else: 
        return False

标签: pythonpython-3.xlist

解决方案


从否定你的测试条件开始,这样你就可以简单地早点返回。最后一个测试根本不需要if语句,因为此时条件的结果就是函数的返回值。

def spy_game(nums):
    if 0 not in nums:
        return False

    a_1 = nums.index(0)
    nums_1 = nums[a_1+1:]

    if 0 not in nums_1:
        return False

    a_2 = nums_1.index(0)
    return 7 in nums[a_2+1:]

推荐阅读