首页 > 解决方案 > 给定一个整数列表,如果某处的某个 3 旁边有一个 3,则返回 3

问题描述

给定一个整数列表,如果该数组在某处的某个 3 旁边包含一个 3,则返回 True。

如果第一个索引处有 3(后跟 3),我的代码返回 true,但如果在任何其他索引处有 3(后跟 3),则返回 false。

我究竟做错了什么?

def myfunc(*args):
    for i in args:
        for x in range(len(args)): 
            if i[x]==i[x+1] and i[x]==3:
                return True
            else:
                pass
        else:
            return False

标签: python

解决方案


只有一行:

def myfunc(*args): return any([3, 3] == list(args[i:i+2]) for i in range(len(args)))

您实际上检查输入的任何连续子集中(由 slice 表示)中是否有两个连续3的(由 list表示)[3, 3]args[i:i+2]


推荐阅读