Python 使用递归打印数组中给定元素的索引?

Python 使用递归打印数组中给定元素的索引?,python,arrays,list,recursion,indices,Python,Arrays,List,Recursion,Indices,我正在尝试编写代码,用于返回数组中给定元素的所有索引的数组 arr = [15,11,40,4,4,9] x = 4 # fsf means count of element 'found so far' def all_index(arr, i , x, fsf): if i == len(arr): result = [0] * fsf elif arr[i] == x: indices = all_index(arr, i + 1

我正在尝试编写代码,用于返回数组中给定元素的所有索引的数组

arr = [15,11,40,4,4,9]
x = 4
# fsf means count of element 'found so far'
def all_index(arr, i , x, fsf):
    if i == len(arr):
        result = [0] * fsf 
    
    elif arr[i] == x:
        indices = all_index(arr, i + 1, x, fsf + 1)
        indices[fsf] = i
        return indices
        
    else:
        indices = all_index(arr, i + 1, x, fsf)
        return indices
        
        
print(all_index(arr, 0, x, 0))
这个问题在这里已经有了答案: Python中返回无的递归函数[重复](2个答案)

您的帖子与一个类似的问题相关联。如果这个问题不能解决您的问题,请提出新问题

3小时前关门了

(为您提供私人反馈) 编辑问题

我正在尝试编写代码,用于返回数组中给定元素的所有索引的数组。fsf表示元素“到目前为止已找到”的计数

arr = [15,11,40,4,4,9]
x = 4

def all_index(arr, i , x, fsf):
    if i == len(arr):
        result = [0] * fsf 
    
    elif arr[i] == x:
        indices = all_index(arr, i + 1, x, fsf + 1)
        indices[fsf] = i
        return indices
        
    else:
        indices = all_index(arr, i + 1, x, fsf)
        return indices
        
        
print(all_index(arr, 0, x, 0))
预期输出:
[3,4]

据我所知,索引数组是[0,0],但稍后它必须更改为[3,4]


虽然代码很容易使用迭代,但我正在尝试学习递归。

您可以简单地
在每个递归处将索引附加到数组中,其中值与数组的当前元素匹配:

ans = []
def all_index(arr, i, x):
    if i is len(arr): return;
    if x is arr[i]:
        ans.append(i)
    all_index(arr, i+1, x)


all_index(arr, 0, x)
print(ans)

您只需在值与数组的当前元素匹配的每个递归处将索引添加到数组中即可:

ans = []
def all_index(arr, i, x):
    if i is len(arr): return;
    if x is arr[i]:
        ans.append(i)
    all_index(arr, i+1, x)


all_index(arr, 0, x)
print(ans)

简单的答案是你过于复杂,你没有在方法中循环数组简单的答案是你过于复杂,你没有在方法中循环数组这是正确的答案,因为Python中的数组没有固定的长度。例如,如果是在Java中,这个方法只适用于列表,而不适用于数组。如果,我将ans创建为大小等于给定数组长度的列表,元素为None,即ans=[None]*len(arr)。那么,有没有办法用索引改变ans中的元素,即[3,4,None,None,…]然后,我所要做的就是打印不是None的元素。为什么要费心存储None呢?这样会给人一种印象,即代码在其他语言中也适用于数组。这是正确的答案,因为Python中的数组没有固定的长度。例如,如果是在Java中,这个方法只适用于列表,而不适用于数组。如果,我将ans创建为大小等于给定数组长度的列表,元素为None,即ans=[None]*len(arr)。那么,是否有任何方法可以使用索引来更改ans中的元素,即[3,4,None,None,…]然后,我所要做的就是打印不是None的元素。为什么要费心存储None呢?这样会给人一种印象,即代码在其他语言中也可以与数组一起工作。