2015-02-06 67 views
0

我工作了下面的实践问题,从codingbat:检查如果列表包含一个子列表

鉴于int数组,如果返回。1,2,3,...出现在真数组在某处。

我已经写了:

def array123(nums): 
    array = [1,2,3] 
    for i in nums: 
     sub = nums[i:i+3] 
     if array == sub: 
      return True 
    return False 

它使当字符串是[1,2,3],数字作品的任何其他组合失败。我明白编码提供的解决方案,但我不明白为什么我的代码在这种情况下只会失败。我究竟做错了什么?

+2

因为'for'不如你认为的那样工作。 – 2015-02-06 04:18:51

回答

2

for i in nums:先后分配到i项目列表nums的价值。然而,你似乎认为它

分配真实指数而不是 - 也许这是因为它就是它的等效结构将在JavaScript中。

因此,使i遍历指数 - for i in range(len(nums)-3):和其余的代码似乎很好!