CodingBat Python warmup-2阵列123,单线解决方案赢得';行不通

CodingBat Python warmup-2阵列123,单线解决方案赢得';行不通,python,return,boolean-expression,Python,Return,Boolean Expression,问题是: 给定一个整数数组,如果数组中某处出现数字1、2、3的序列,则返回True 可在此处找到: 我的迭代解决方案是这样的: has_seq = False for i in range(len(nums) - 2): if nums[i: i + 3] == [1, 2, 3]: # do indexes i .. i + 3 equal 1, 2, 3 has_seq = True break # exit loop if condition

问题是:

给定一个整数数组,如果数组中某处出现数字1、2、3的序列,则返回True

可在此处找到:

我的迭代解决方案是这样的:

has_seq = False

for i in range(len(nums) - 2):
    if nums[i: i + 3] == [1, 2, 3]:  # do indexes i .. i + 3 equal 1, 2, 3
        has_seq = True
        break  # exit loop if condition met

return has_seq
我试图将其转换为一行返回,到目前为止,我的代码如下:

return bool(True for i in range(len(nums) - 2) if nums[i: i + 3] == [1, 2, 3])

这不起作用,并且总是返回True,即使测试用例显示它不应该返回True。我做错了什么?如果无法对此进行单行返回,为什么?

您正在给
bool
一个生成器对象,据我所知,生成器总是真实的

您想在这里而不是
bool

return any(nums[i: i + 3] == [1, 2, 3] for i in range(len(nums) - 2))

你给了
bool
一个生成器对象,据我所知,生成器总是真实的

您想在这里而不是
bool

return any(nums[i: i + 3] == [1, 2, 3] for i in range(len(nums) - 2))

对于,不需要使用
True。if条件可以移到开头
any(nums[i:i+3]=[1,2,3]表示范围内的i(len(nums)-2))
Carcigenicate和@FrankYellin感谢迄今为止的帮助。我尝试过你给出的解决方案,但仍然不起作用。当我尝试编译时,我得到的错误是没有定义“any”。这个解决方案在他们的网站上对你有用吗?你说的“当我尝试编译时”是什么意思?你在使用Python吗?any()是一个内置函数。@LogicallySpeakingLaura我想不出如何定义
any
,除非他们明确禁止它用于此挑战。不,我的意思是在他们的网站上提交解决方案时,而不是在Python IDE上。也许他们只是出于某种原因不接受它。你不需要为
设置
True。if条件可以移到开头
any(nums[i:i+3]=[1,2,3]表示范围内的i(len(nums)-2))
Carcigenicate和@FrankYellin感谢迄今为止的帮助。我尝试过你给出的解决方案,但仍然不起作用。当我尝试编译时,我得到的错误是没有定义“any”。这个解决方案在他们的网站上对你有用吗?你说的“当我尝试编译时”是什么意思?你在使用Python吗?any()是一个内置函数。@LogicallySpeakingLaura我想不出如何定义
any
,除非他们明确禁止它用于此挑战。不,我的意思是在他们的网站上提交解决方案时,而不是在Python IDE上。也许出于某种原因,他们不会接受。