我正在编写一个过滤函数,这样当我插入我的波形号时,filter_wave_num函数将被执行n次,以更改波形号。
然而,它似乎不起作用,它只重复输出一次,而我想让它重复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发布于 2019-02-02 23:46:42
filter_wave_num函数起作用。
如果你需要递归地使用它n次(每次都是在上一次获得的结果上),修改你的第二个函数,如下所示:
def filter_wave(wave, n):
for _ in range(n):
wave = filter_wave_num(wave)
return wave您编写的函数在每次创建新列表时都会创建,但是您没有在每次迭代中返回结果,它就会丢失。
发布于 2019-02-02 23:19:40
您确实调用了函数n次,但是您使用相同的输入来调用它,因此在所有迭代之后都会得到相同的输出。下面是您需要做的:注意,我将'i‘的名称更改为'_',这是一个约定,表明我们不需要使用这个变量的值
def filter_wave(wave,n):
result = wave
for _ in range(n):
result = filter_wave_num(result)
return result发布于 2019-02-03 00:06:21
将所有迭代结果存储在一个列表中,然后返回它:
def filter_wave(wave,n):
result = []
for i in range(n):
wave = filter_wave_num(wave)
result.append(wave)
return resulthttps://stackoverflow.com/questions/54494336
复制相似问题