首页 > 解决方案 > 遍历数组时使用 list[] 而不是 range() 时列表索引超出范围

问题描述

我在 Coding Bat, Warmup-2 > array_front9 上研究这个问题:

给定一个整数数组,如果数组中的前 4 个元素之一是 9,则返回 True。数组长度可能小于 4。

例子:

array_front9([1, 2, 9, 3, 4]) → True
array_front9([1, 2, 3, 4, 9]) → False
array_front9([1, 2, 3, 4, 5]) → False

这是我的有效解决方案:

def array_front9(nums):
  if len(nums) >= 4: 
    for i in range(0,4):
      if nums[i] == 9:
        return True
    return False
  elif 0 <= 0 < 4:
    for i in range(len(nums)):
      if nums[i] == 9:
        return True
    return False
  else:
    if len(nums) == 0:
      return False

但是,在第 3 行中,如果我尝试通过编写以下代码来遍历列表:

for i in num[0:4]:

我会得到一个列表索引超出范围错误。有人可以帮我理解为什么我不能这样做吗?

谢谢!

标签: pythonrange

解决方案


这是一个 2 班轮版本:

def array_front9(nums):
   return 9 in nums[:4]

您的代码的问题:

for i in num[0:4]:正在迭代列表的元素。例如,如果列表的长度为 9,并且i=9,您无法获取索引,因为它不存在


推荐阅读