Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
代码正确,但测试用例未在python中运行_Python_Python 3.x - Fatal编程技术网

代码正确,但测试用例未在python中运行

代码正确,但测试用例未在python中运行,python,python-3.x,Python,Python 3.x,给定整数数组,如果..则返回True。。1, 2, 3, .. 出现在数组中的某个位置 def array123(nums): for i in nums: if nums[i:i+3] == [1,2,3]: return True return False 我的代码满足除nums=[1,2,3]之外的所有测试用例 有人能告诉我我的代码有什么问题吗?你的代码不完全正确。您正在使用列表中的项目对列表进行切片,而不是使用索引。幸运的是,这没有

给定整数数组,如果..则返回True。。1, 2, 3, .. 出现在数组中的某个位置

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

我的代码满足除nums=[1,2,3]之外的所有测试用例
有人能告诉我我的代码有什么问题吗?你的代码不完全正确。您正在使用列表中的项目对列表进行切片,而不是使用索引。幸运的是,这没有引发任何错误,因为列表中的项目在列表索引的范围内,或者更确切地说,当正确完成时,无论开始和/或停止索引如何,切片都不会引发错误

您可以使用
range(len(…)
生成索引,您可以在
len(nums)-len(sublist)
处停止搜索,这样就不会检查小于子列表长度的切片。当子列表的长度变大时,这就更方便了

def array123(nums, sublist):
    j = len(sublist)
    for i in range(len(nums)-j):
       if nums[i:i+j] == sublist:
          return True
    return False

# Call function
array123(nums, [1,2,3])

有用的参考资料:


您得到了错误的结果,因为您迭代的是元素的值,而不是元素的元素索引。尝试以下代码

def array123(nums):
    for i in range(len(nums)-2):
       if nums[i:i+3] == [1,2,3]:
          return True
    return False
请记住给出列表的结束索引(range(len(nums)-2),因为假设数组的长度为4,则(range(len(nums)-2))将为

(范围(2))=[0,1]


因此循环将迭代0,1作为起始索引,应该是这样的

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

试试这个。希望这有帮助。:)

你得到的是错误的?代码不对:
i
nums
中的值,而不是索引。我还想要nums中的值,而不是索引。我不理解“用列表中的项目切片列表,而不是索引”部分。你能explain@Duck_dragon
for i in nums
迭代列表中的元素,并且执行
nums[i:i+3]
将这些元素用作切片指示,但是如果这是在幕后发生的,那么为什么我会得到前面所有问题的正确答案。在这一个也。唯一的问题是,一个测试用例不起作用,其余的都起作用了。你能给我一个链接,我可以从中阅读关于切片索引和列表中元素的内容吗?len(nums)给了我一个错误:列表索引超出范围,而len(nums)-2不在范围内。你能解释为什么要使用len(nums)-2或num[:-2]这个概念是什么。为什么我不能在列表中迭代,因为wholealso len(nums)给了我错误:列表索引超出范围,而len(nums)-2不在范围内?你能解释为什么吗?因为假设len(nums)=5,那么如果你用len(nums)代替(len(nums)-2),那么范围(len(nums))=[0,1,2,3,4]和循环中的下一行nums[i:i+3]=nums[4:4+3]对于最后一个索引4和NUM[4:7],这是不可能的,因为NUM只包含第四个索引之前的元素。