给定一个int数组,如果.. 1,2,3,..出现在某个数组中,则返回True。
def array123(nums):
for i in nums:
if nums[i:i+3] == [1,2,3]:
return True
return False
我的代码满足所有测试用例,除了nums = [1,2,3] 谁能告诉我我的代码有什么问题
答案 0 :(得分:1)
您的代码并不完全正确。您正在使用列表中的项目切割列表,而不是使用索引。幸运的是,这并没有抛出任何错误,因为列表中的项目在列表索引的范围内,或者当完成correclty时,切片不会引发错误,无论开始和/或停止索引如何。
您可以使用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])
有用的参考:
答案 1 :(得分:1)
应该是这样的。
Paragraph para3 = new Paragraph(metroComboBox1.Text + " from " +
DateTime.Parse(metroDateTime1.Text) + " to " +
DateTime.Parse(metroDateTime2.Text));
试试这个。希望这可以帮助。 :)
答案 2 :(得分:0)
你得到了错误的结果,因为你正在迭代不在元素元素索引上的元素的值。请尝试以下代码
def array123(nums):
for i in range(len(nums)-2):
if nums[i:i+3] == [1,2,3]:
return True
return False
并且记得给出列表的结束索引(范围(len(nums)-2))因为假设你的数组的长度是4那么(范围(len(nums)-2))将是
(范围(2))= [0,1]
因此循环将迭代0,1作为起始索引