我正在编写一个过滤器函数,以便在插入波形列表(即数字列表)时,将执行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
答案 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