python - 函数返回 None 而不是索引
问题描述
此代码应返回元素的索引,该索引被相等的元素总和包围
def find_even_index(arr):
for elem in arr:
i = arr.index(elem)
if sum(arr[:i]) == sum(arr[i+1:]):
return i
else:
pass
print find_even_index([1,2,3,4,3,2,1])
print find_even_index([20,10,30,10,10,15,35])
它返回
3
没有任何
而不是None应该返回3但它没有。为什么??
解决方案
您的问题是仅返回in listarr.index(elem)
的第一个索引。elem
arr
展示:
>>> lst = [1, 2, 3, 1, 2]
>>> lst.index(1)
0
>>> lst.index(2)
1
>>> lst.index(3)
2
enumerate
而是在遍历列表时使用来跟踪索引,如下所示:
def find_even_index(arr):
for i, _ in enumerate(arr):
if sum(arr[:i]) == sum(arr[i+1:]):
return i
print(find_even_index([1,2,3,4,3,2,1])) # 3
print(find_even_index([20,10,30,10,10,15,35])) # 3
推荐阅读
- reactjs - 我将 productsList 元素设置为 null,但产品仍在呈现
- android - Android Studio 致命异常主要
- phpstorm - 使用 PhpStorm 从另一台 PC 访问服务器源文件
- c++ - 如果只有一个“.c”文件包含预编译头文件,它们会加快编译速度吗?
- java - Jetty 服务器中的 HTTP 415 不支持的媒体类型
- php - 设置动态环境 LARAVEL
- django - Django:自动填充模型的 m2m 字段
- python - 从 url python 检索文件
- amazon-web-services - AWS Autoscaling on CloudWatch SQS 指标问题
- azure - 使用 powershell 获取 Azure Web/Function App 身份验证配置