Skip to main content
 首页 » 编程设计

python之有没有办法用 less "nesting"写

2025年05月04日14JeffreyZhao

本题为作业题。我想我解决了它,但我想知道这是最好的解决方案吗?问题是获取一个列表并遍历它以查看它是否包含特定的子序列: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 

请您参考如下方法:

首先否定您的测试条件,这样您就可以提前返回。最后一个测试根本不需要 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:]