python - 遍历数组时使用 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]:
我会得到一个列表索引超出范围错误。有人可以帮我理解为什么我不能这样做吗?
谢谢!
解决方案
这是一个 2 班轮版本:
def array_front9(nums):
return 9 in nums[:4]
您的代码的问题:
for i in num[0:4]:
正在迭代列表的元素。例如,如果列表的长度为 9,并且i=9
,您无法获取索引,因为它不存在
推荐阅读
- geolocation - 在一次 Mediawiki API 调用中检索项目、其浏览量和地理属性
- android - 为什么我在导入领域数据库时无法在 android studio 上运行我的项目?
- django - 在 Django Rest Framework 中访问 .data 后更新序列化程序中的值
- android - Firestore 查询列表映射对象
- python - 如何将大小为 3 的元组列表制作成键值对?
- python - 魔术 8 球比赛的测试用例
- json - 如何在 swift 4 中使用 Graphql 获取 json 值数组?
- java - 实体类中的所有实例变量是否都在数据库中持久化?
- android - 如何在反应原生 ios 设备中读取通话记录或通话记录?
- spring - 使用 Spring 实现用户通知