相关疑难解决方法(0)

next()与python中的any/all不一致

我今天跑了一个错误,因为我next()用来提取一个值,而'找不到'会发出一个错误StopIteration.

通常会停止程序,但函数使用next是在all()迭代中调用的,所以all刚刚终止并返回True.

这是预期的行为吗?是否有风格指南,以帮助避免这种事情?

简化示例:

def error(): return next(i for i in range(3) if i==10)
error() # fails with StopIteration
all(error() for i in range(2)) # returns True
Run Code Online (Sandbox Code Playgroud)

python generator generator-expression python-3.x

26
推荐指数
2
解决办法
883
查看次数

查找数组是否包含2旁边的2

我坚持这个问题

给定一个int数组,如果数组在某个地方包含2,那么返回True.

has22([1, 2, 2]) ? True
has22([1, 2, 1, 2]) ? False
has22([2, 1, 2]) ? False
Run Code Online (Sandbox Code Playgroud)

我知道基本的想法(有语法错误),但我无法实现它.我也想知道这是什么类型的问题,例如.图,搜索?

def has22(nums):
for x in nums:
    if ( (nums[x] = 2) and (nums[x+1] = 2) )
        return True

return False 
Run Code Online (Sandbox Code Playgroud)

python debugging

5
推荐指数
3
解决办法
5801
查看次数