首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在另一个函数中调用我的函数n次

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

Stack Overflow用户
提问于 2019-02-02 23:10:53
回答 3查看 174关注 0票数 0

我正在编写一个过滤函数,这样当我插入我的波形号时,filter_wave_num函数将被执行n次,以更改波形号。

然而,它似乎不起作用,它只重复输出一次,而我想让它重复n次。会很感谢你在这方面的帮助。

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

发布于 2019-02-02 23:46:42

filter_wave_num函数起作用。

如果你需要递归地使用它n次(每次都是在上一次获得的结果上),修改你的第二个函数,如下所示:

代码语言:javascript
复制
def filter_wave(wave, n):
    for _ in range(n):
        wave = filter_wave_num(wave)
    return wave

您编写的函数在每次创建新列表时都会创建,但是您没有在每次迭代中返回结果,它就会丢失。

票数 2
EN

Stack Overflow用户

发布于 2019-02-02 23:19:40

您确实调用了函数n次,但是您使用相同的输入来调用它,因此在所有迭代之后都会得到相同的输出。下面是您需要做的:注意,我将'i‘的名称更改为'_',这是一个约定,表明我们不需要使用这个变量的值

代码语言:javascript
复制
def filter_wave(wave,n):
    result = wave
    for _ in range(n):
        result = filter_wave_num(result)
    return result
票数 1
EN

Stack Overflow用户

发布于 2019-02-03 00:06:21

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

代码语言:javascript
复制
def filter_wave(wave,n):
    result = []
    for i in range(n):
        wave = filter_wave_num(wave)
        result.append(wave)
    return result
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54494336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档