如何在另一个函数中调用我的函数n次

时间:2019-02-02 15:10:53

标签: python

我正在编写一个过滤器函数,以便在插入波形列表(即数字列表)时,将执行n次filter_wave_num函数以更改波形号。

但是,它似乎不起作用,当我希望它执行n次时,它仅重复输出一次。在此感谢您的帮助。

def filter_wave_num(wave):
    new_wave = []
    for i in range(len(wave)):
            if i == 0:
                new_wave.append(int(wave[i]*0.6 + wave[i+1]*0.2))
            elif i == len(wave)-1:
                new_wave.append(int(wave[i-1]*0.2 + wave[i]*0.6))
            else:
                new_wave.append(int(wave[i-1]*0.2 + wave[i]*0.6 + wave[i+1]*0.2))
    return new_wave

def filter_wave(wave,n):
    for i in range(n):
        filter_wave_num(wave)
    return filter_wave_num(wave)

wave = [600, 3200, 7600, 13400, 18400, 22600, 24400] 
# each element inside the list has to be changed n times

3 个答案:

答案 0 :(得分:2)

filter_wave_num函数起作用。

如果你需要递归使用n次(每次的结果所获得的前一次)修改你的第二个功能是这样的:

def filter_wave(wave, n):
    for _ in range(n):
        wave = filter_wave_num(wave)
    return wave

你写的功能,每次创建一个新的列表,但你不返回结果每次迭代和它的丢失。

答案 1 :(得分:1)

您确实调用了n次函数,但您使用相同的输入调用了该函数,因此在所有迭代之后您将获得相同的输出。 这是您需要做的: 注意,我将“ i”的名称更改为“ _”,这是一个约定,表示我们不需要使用此变量的值

def filter_wave(wave,n):
    result = wave
    for _ in range(n):
        result = filter_wave_num(result)
    return result

答案 2 :(得分:0)

将所有迭代结果存储在列表中,然后返回:

def filter_wave(wave,n):
    result = []
    for i in range(n):
        wave = filter_wave_num(wave)
        result.append(wave)
    return result