python - 函数在应该返回最后一个索引时返回 None
问题描述
我试图让这个函数返回列表中最小值的索引。它适用于所有情况,除非最小值是列表的最后一个元素。谁能发现我的错误?
def rotation_point(rotated_list):
length = len(rotated_list)
for i in range (0,length-1):
if rotated_list[i]<rotated_list[(i+1)%length] and rotated_list[i]<rotated_list[i-1]:
return i
else:
pass
我知道它与 if 语句的第一部分有关,但我不明白为什么它不起作用。
解决方案
if 语句本身工作得很好,但你从来没有真正检查过最后一个元素,因为你使用:range(0,length-1)
for 循环的范围。该range
功能已经停止在length - 1
。你应该使用:range(0,length)
。
请注意,您实际上也不需要0
默认范围已经从零开始,并且不需要else: pass
使用 else 语句,删除它不会改变任何事情。
这是您的函数的工作(和更清洁)版本的样子:
def rotation_point(rotated_list):
length = len(rotated_list)
for i in range (length):
if rotated_list[i]<rotated_list[(i+1)%length] and rotated_list[i]<rotated_list[i-1]:
return i
以下是 range 函数的更多示例:
>>> range(0, 5-1)
[0, 1, 2, 3]
>>> range(0, 5)
[0, 1, 2, 3, 4]
>>> range(5)
[0, 1, 2, 3, 4]
推荐阅读
- mysql - 如何编写具有多个计数列的查询
- azure - Azure - 资源的命名约定
- python - 在 Python 中通过递归找到最大金字塔数
- javascript - 为什么作为 blob 打开的 PDF 文件在本地主机上不起作用?
- swift - SwiftUI - 从警报进入新视图
- java - How should I handle invalid user input?
- java - 使用 YouTube Data API v3 确定 YouTube 频道的上传速率
- python - 值错误:x、y 和格式字符串不能为 None
- visual-studio - Visual Studio 灯泡不再显示“修复格式”
- android - 使用 CollapsingToolbarLayout 在 CoordinatorLayout 中的当前滚动位置