python - 有没有办法用 less "nesting"写?

标签 python python-3.x list

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

关于python - 有没有办法用 less "nesting"写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56672437/

相关文章:

python - 函数中列表的总和

python - 具有可选返回值的 Python 函数中的惰性存储和代码执行

python - Python 中的列表迭代

python - Django 查找图中两个顶点之间的路径

宇宙飞船上接收消息的系统的算法设计

python - NewRandomAccessFile 无法创建/打开;注意_OCR

Python 2.6 -> Python 3(代理处理程序)

python - 当在Python中让一个类继承 `list`时,如何获取该列表的实例?

python - 如何从 tensorflow 高级 API 恢复训练好的 LinearClassifier 并进行预测

python - 无法在 Fedora 21 系统上安装 python numba 依赖项 llvmlite