以下两个python方法有什么区别?

时间:2018-06-03 13:45:05

标签: python

这两个python代码片段有什么区别?
我想检查数组是否包含序列中的整数1,2,3作为其元素?

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

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

第一个给出了数组的错误答案:

arrayCheck([1,1,2,1,1,1,1,2,3])

但第二个是正确的。

1 个答案:

答案 0 :(得分:1)

第一个块i是参数的元素。第二,它只是他们的指数。

如果您希望第一个迭代索引而不是元素,请使用此

def arrayCheck(nums):
    for i, _ in enumerate(nums):
        if i <= len(nums)-3:

顺便说一句,你也可以使用列表切片

if nums[i:i+2] == [1,2,3]:
    return True