首页 > 解决方案 > 函数返回 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但它没有。为什么??

标签: pythonfunction

解决方案


您的问题是仅返回in listarr.index(elem)的第一个索引。elemarr

展示:

>>> 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

推荐阅读