查找int中是否连续出现int

时间:2015-01-19 23:00:40

标签: python list if-statement

我正在处理Python online exercise

任务是:

Given an array of ints, return True if the array contains a 2 next to a 2 somewhere.

    has22([1, 2, 2]) → True
    has22([1, 2, 1, 2]) → False
    has22([2, 1, 2]) → False

到目前为止我得到的代码:

def has22(nums):
  for i in range (len(nums)-1):
    if nums[i+1]==2 and nums[i]==2:
      return True
      break

将返回所有True个实例,但我想不出为False个实例包含语句的方法(我想坚持使用控制流解决方案)。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

你不需要在return语句后中断,你只需要添加"返回False" for循环中的语句

def has22(nums):
   for i in range (len(nums)-1):
    if nums[i+1]==2 and nums[i]==2:
     return True
   return False

答案 1 :(得分:3)

您可以使用anygenerator expression

来简化您的功能
def has22(nums):
    return any(nums[i+1] == nums[i] == 2 for i in range(len(nums)-1))

演示:

>>> def has22(nums):
...     return any(nums[i+1] == nums[i] == 2 for i in range(len(nums)-1))
...
>>> has22([1, 2, 2])
True
>>> has22([1, 2, 1, 2])
False
>>> has22([2, 1, 2])
False
>>>